2017-03-01 65 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" />