J Jacob Medlem sedan dec. 2000 503 inlägg Frågan 28 juli 2003 16:07 #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.
Nexus86 Medlem sedan okt. 2002 3 030 inlägg 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.
J Jacob Medlem sedan dec. 2000 503 inlägg Jag hade en tanke med getElementByName men kan kunde tydligen inte ha namn på tr taggar.
Nexus86 Medlem sedan okt. 2002 3 030 inlägg Namn ska även det vara unikt.
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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>
J Jacob Medlem sedan dec. 2000 503 inlägg Det fungerar nästa som jag vill, men kan man lägga till en ny class i ett stylsheet men javascript?
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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>