Felix Riesterer: getElementsByClassName und set.Attribute

Beitrag lesen

Lieber Matthias Scharwies,

das Wort "class" ist in JavaScript ein reserviertes Wort, daher kann man nicht einfach <ElementOjekt>.class="string" notieren, sondern muss "className" als Eigenschaft verwenden:

<ElementOjekt>.className = "string";

function ColorTA()

{
var markiert = document.getElementsByClassName('con');
alert(markiert);
markiert.setAttribute("style","background:#66FF00;");
markiert.setAttribute("class","marked");
}

  
In Deiner Variablen "markiert" steht - [wenn der Browser die Methode getElementsByClassName unterstützt](http://caniuse.com/#search=getElementsByClassName) - keine Referenz auf ein Elementobjekt, sondern auf eine Liste (sogenannte "live node list") von solchen, die sich wie ein Array ansprechen lässt. Das lässt auch schon der Plural in getElement\_s\_ByClassName vermuten.  
  
Du brauchst also eine Schleife, um über die gefundenen Elemente zu iterieren:  
  
~~~javascript
function ColorTA() {  
    var markiert = document.getElementsByClassName('con');  
    var i;  
  
    for (i = 0; i < markiert.length; i++) {  
        markiert[i].className = "marked";  
        markiert[i].style = "background:#66FF00;";  
    }  
}

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)