webForumDet fria alternativet

Ändra style på alla IDn

6 svar · 291 visningar · startad av Jacob

JacobMedlem sedan dec. 2000503 inlägg
#1

Jag vill änte en style på alla taggar som har ett visst ID:

		function change(id){
		var ch = document.getElementById(id);
		  if (ch.style.display=="none") {
			 ch.style.display=''
			 event.srcElement.src="img/open.gif"
		  }
		  else {
			 ch.style.display="none"
			 event.srcElement.src="img/fold.gif"
		  }
		}

Problemet är att den bara ändrar första taggen med IDt.

Hur löser man detta.

Nexus86Medlem sedan okt. 20023 030 inlägg
#2

Id är meningen att det ska vara unikt genom alla taggar. Man får bara använda id en gång i ett dokument. Om du använder det flera gånger följer inte din sida html-standarden. Om du vill ändra för en hel sida får du använda klasser. Vet dock inte hur man ändrar det med javascript.

JacobMedlem sedan dec. 2000503 inlägg
#3

Jag hade en tanke med getElementByName men kan kunde tydligen inte ha namn på tr taggar.

Nexus86Medlem sedan okt. 20023 030 inlägg
#4

Namn ska även det vara unikt.

JojoxxMedlem sedan juni 20004 308 inlägg
#5

Som sagt, id måste vara unikt. Så här kan du ändra klass-egenskaper:

<style type="text/css">
.foo { color: blue; }
</style>
<script type="text/javascript">
function getStyleClassByName(className){
	if(document.all){
		for(var styleSheet=0;styleSheet<document.styleSheets.length;styleSheet++){
			for(var rule=0;rule<document.styleSheets[styleSheet].rules.length;rule++){
				if(document.styleSheets[styleSheet].rules[rule].selectorText=="."+className){ return document.styleSheets[styleSheet].rules[rule]; }
			}
		}
	} else if(document.getElementById){
		for(var styleSheet=0;styleSheet<document.styleSheets.length;styleSheet++){
			for(var rule=0;rule<document.styleSheets[styleSheet].cssRules.length;rule++){
				if(document.styleSheets[styleSheet].cssRules[rule].selectorText=="."+className){ return document.styleSheets[styleSheet].cssRules[rule]; }
			}
		}
	}
	return null;
}
</script>
<span class="foo">Foo?</span> - <span class="foo">Yes, Foo!</span>
<br/>
<a href="#" onClick="getStyleClassByName('foo').style.color='green';">Grön</a>
<a href="#" onClick="getStyleClassByName('foo').style.color='blue';">Blå</a>
JacobMedlem sedan dec. 2000503 inlägg
#6

Det fungerar nästa som jag vill, men kan man lägga till en ny class i ett stylsheet men javascript?

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Vet inte. Har aldrig funnit någon anledning att undersöka saken :) Du kan ju skapa en "tom" klass (utan egenskaper) om du inte vill sätta något speciellt som default.

<style type="text/css">
.foo { }
</style>
131 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)