2017-03-01 1 views
0

In Codeausschnitt unten haben wir 0 Element von Klassennamen abc:TBODY seltsames Verhalten mit JavaScript-Auswahl

var tbody = document.getElementsByClassName('abc'); 
 
console.log('tbody: ' + tbody.length) 
 

 
var unKnown = document.getElementsByClassName('edf'); 
 
console.log('unKnown: ' + unKnown.length)
<tbody class="abc"> 
 
     <tr><td>Hi!</td></tr> 
 
    </tbody> 
 
    
 
    <dflgkjldk class="edf" /> 
 

Aber das unbekannte Element wird von javasctip gefunden. Kennst du den Grund?

+0

'' völlig ignoriert wird, weil sie nicht gültig außerhalb von ''

ist, denke ich. Wenn Sie das Dokument überprüfen, können Sie sehen, dass es nicht da ist. Fragen Sie, warum falsch platzierte Tags/Elemente ignoriert werden, aber unbekannte Elemente nicht? –

+0

Wenn Sie den Bereich "inspizieren", haben Sie '' tag, aber es gibt kein tbody-Tag. –

+0

@Felix Kling, Ja: * Warum falsch platzierte Tags/Elemente ignoriert werden, unbekannte Elemente jedoch nicht *. –

Antwort

1

Ich könnte falsch liegen, aber ich denke, dass, wenn Sie falsches Element (lesen Sie wissen Element falsch Ihr Beispiel von tbody) der Browser ist schlau genug, um es aus dem DOM herauszufiltern.

Unbekanntes Element ist enthalten, da Sie in HTML eigene Elemente angeben können. Und der Browser weiß nicht, wie er standardmäßig damit umgehen soll, aber er weiß, dass er ihn in das DOM aufnehmen sollte.

Lesen Sie diese über unknow Element und warum sind sie nützlich: Is it OK to use unknown HTML tags?

1

das „Table“ Element fehlt macht die bekannte „tbody“ Tag falsch und daher wird sie ignoriert. Wenn Sie nur Ihren tbody mit einem "table" -Tag umschließen, funktioniert es.

var tbody = document.getElementsByClassName('abc'); 
 
console.log('tbody: ' + tbody.length) 
 

 
var unKnown = document.getElementsByClassName('edf'); 
 
console.log('unKnown: ' + unKnown.length)
<table> 
 
    <tbody class="abc"> 
 
     <tr><td>Hi!</td></tr> 
 
    </tbody> 
 
</table> 
 
    
 
    <dflgkjldk class="edf" />