2017-03-01 40 views
0

在代碼片段TBODY奇怪的行爲,波紋管,我們有0元的類名ABC使用javascript選擇

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" /> 
 

但未知元素已經javasctip發現。你知道原因嗎?

+0

''被完全忽略,因爲它不是'

有效外'我想。如果你檢查文件,你可以看到它不在那裏。你問爲什麼不正確放置的標籤/元素被忽略,但未知的元素不是? –

+0

如果你檢查了這個區域,你有''標籤,但是沒有tbody標籤。 –

+0

@Felix Kling,是的:*爲什麼不正確放置的標籤/元素被忽略,但未知的元素不是*。 –

回答

1

我可能是錯的,但我認爲如果使用不正確的元素(錯誤地讀取了元素的tbody示例),瀏覽器足夠聰明,可以將其從DOM中過濾出來。

包含未知元素,因爲在HTML中您可以指定自己的元素。瀏覽器不知道如何處理它們,但它知道它應該包含在DOM中。

閱讀本關於不明元素以及它們爲何如此有用:Is it OK to use unknown HTML tags?

1

缺少「表」元素呈現稱爲「TBODY」標籤不正確的,爲此它被忽略。如果你只是用一個「表格」標籤包裝你的tbody,它就會起作用。

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" />