【发布时间】:2013-12-01 04:36:55
【问题描述】:
按照我的代码:
HTML:
<ul id="ul_o">
<li>v1</li>
<li>v2</li>
</ul>
JS:
console.log(document.getElementById("ul_o").getElementsByClassName("LI").length);
为什么控制台中的数字是 0 而不是 2?
【问题讨论】:
标签: javascript html
按照我的代码:
HTML:
<ul id="ul_o">
<li>v1</li>
<li>v2</li>
</ul>
JS:
console.log(document.getElementById("ul_o").getElementsByClassName("LI").length);
为什么控制台中的数字是 0 而不是 2?
【问题讨论】:
标签: javascript html
给 - 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>
【讨论】:
getElementsByClassName 使用类属性来识别标签。你应该使用getElementsByTagName("li")
console.log(document.getElementById("ul_o").getElementsByTagName("li").length)
【讨论】:
<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);
【讨论】:
试试这样的
console.log(document.getElementById("ul_o").getElementsByTagName("LI").length);
document.getElementsByTagName
getElementsByTagName() 方法以 NodeList 对象的形式返回具有指定标记名的元素子元素的集合。
document.getElementsByClassName
返回一组具有所有给定类名的元素
【讨论】:
LI而不是li?
您也可以使用querySelectorAll 来获取元素的长度,但请确保在加载 DOM 后调用所有这些方法
document.addEventListener("DOMContentLoaded", function () {
console.log(document.getElementById("ul_o").querySelectorAll("li").length);
}, false);
【讨论】:
此表一目了然:-)
| DOM Element | DOM method | DOM method result type |
|---|---|---|
<li id="li"></li> |
getElementById('li') |
#li |
<li class="li"></li> |
getElementsByClassName('li') |
[.li, ..., .li] |
<li></li> |
getElementsByTagName('li') |
[li, ..., li] |
【讨论】:
只需使用:
document.querySelectorAll("#ul_o li").length
【讨论】:
你在你的 JS 中使用了以下代码
console.log(document.getElementById('ul_o').getElementsByClassName('li').length);
你需要明白
console.log(document.getElementById('ul_o').getElementsByTagName('li').length);
将名称 ClassName 替换为 TagName 您的代码将计算
【讨论】:
const elem = document.getElementById("ul_o");
console.log(elem.childElementCount);
<ul id="ul_o">
<li>v1</li>
<li>v2</li>
</ul>
【讨论】: