关注我的代码:
HTML:
<ul id="ul_o">
<li>v1</li>
<li>v2</li>
</ul>
JS:
console.log(document.getElementById("ul_o").getElementsByClassName("LI").length);
为什么在控制台中有数字0而不是2?
答案 0 :(得分:19)
捐赠 - document.getElementById("ul_o").getElementsByTagName("li").length
要获得更广泛的答案以确保dom
已准备好由JS
进行访问和更新,我们可以使用html5中的onreadystatechange事件 -
<html>
<head>
<title>Test</title>
</head>
<body>
<ul id="ul_o">
<li>v1</li>
<li>v2</li>
<li>v3</li>
</ul>
<script type='text/javascript'>
document.onreadystatechange = function () {
if (document.readyState === "interactive") {
document.body.innerHTML = '<h4><code>ul</code> with <i>ul_o</i> has '+document.getElementById("ul_o").getElementsByTagName("li").length +' <code>li</code> Tags</h4>';
}
}
</script>
</body>
</html>
答案 1 :(得分:2)
此代码不言自明: - )
<li id="li"> getElementById('li') -> #li
<li class="li"> getElementsByClassName('li') -> [.li]
<li> getElementsByTagName('li') -> [li]
答案 2 :(得分:1)
getElementsByClassName
使用class属性来标识标记。您应该使用getElementsByTagName("li")
console.log(document.getElementById("ul_o").getElementsByTagName("li").length)
答案 3 :(得分:1)
只需使用:
document.querySelectorAll("#ul_o li").length
答案 4 :(得分:1)
您已在JS中使用以下代码
console.log(document.getElementById('ul_o').getElementsByClassName('li').length);
您需要了解
console.log(document.getElementById('ul_o').getElementsByTagName('li').length);
将名称ClassName替换为TagName,您的代码将计算
答案 5 :(得分:0)
<ul id="ul_o">
<li class="my-class">v1</li>
<li class="my-class">v2</li>
</ul>
console.log(document.getElementById("ul_o").getElementsByClassName("my-class").length);
答案 6 :(得分:0)
尝试这样的事情
console.log(document.getElementById("ul_o").getElementsByTagName("LI").length);
<强> document.getElementsByTagName 强>
getElementsByTagName()方法返回具有指定标记名的元素子元素的集合,作为NodeList对象。
<强> document.getElementsByClassName 强>
返回一组具有所有给定类名
的元素
答案 7 :(得分:0)
您也可以使用querySelectorAll
来获取元素的长度,但确保在加载DOM后调用所有这些方法
document.addEventListener("DOMContentLoaded", function () {
console.log(document.getElementById("ul_o").querySelectorAll("li").length);
}, false);