2017-05-23 3 views
0

Es gibt viele ähnliche Fragen und Antworten, aber nachdem ich alle Lösungen versucht habe, kann ich nicht herausfinden, was mit meinem Code falsch ist.className gibt undefined in Javascript zurück

Hier ist mein Code

var x = document.getElementsByClassName('xclass1 xclass2 xclass3'); 
console.log(x); 
x.className += ' class4'; 
console.log(x); 
console.log(x.className); 

Hier ist, was in der ersten console.log zeigt sich:

[a.xclass1.xclass2.xclass3] 

Es zeigt, dass es das richtige Element

Hier ist, was zeigt, ist findet in der zweiten console.log:

[a.xclass1.xclass2.xclass3, className: "undefined class4"] 
diese

Und die dritte zurück:

undefined class4 

Kann jemand bitte erklären, warum className kehrt undefined? Ich bin hier völlig verloren

+2

'getElementsByClassName' gibt * eine Sammlung von Elementen *, nicht nur eine, weil Sie mehrere Elemente mit der gleichen Klasse haben kann. – Li357

+1

Werfen Sie einen Blick auf classList –

+0

@AndrewLi Vielen Dank! Ich habe es gerade herausgefunden ... 'x [0] .className + = 'class4';' behebt es –

Antwort

1

Siehe unten Code-Schnipsel

Rückkehr nicht definiert, weil Sie Klasse für Array von Objekt zu trösten versucht, das Element nicht eigentliches Element umfasst.

var x = document.getElementsByClassName('xclass1 xclass2 xclass3'); 
 
console.log(x); 
 
x[0].className += ' class4'; 
 
console.log(x); 
 
console.log(x[0].className);
<div class="xclass1 xclass2 xclass3"></div>