如何使用javascript获取id的元素数量?
通常,在加载页面之后,它会提醒2
(元素ID ele1
的长度)。
但为什么提醒undefined
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="ele1" class="test" value="test">
<input type="text" id="ele1" class="test" value="test">
<script>
$(function() {
//var xxx = document.getElementsByClassName('test');
var xxx = document.getElementById('ele1');
var xxx;
alert(xxx.length);
});
</script>
答案 0 :(得分:4)
getElementById()
只返回一个元素。单个元素没有属性length
。 (可能有例外情况,但总的来说......即使存在length
属性, 也很可能指的是返回的元素数量。)
您可能会参考getElementsBy...()
(请注意s
!)或querySelectorAll()
函数,这些函数返回NodeList
,其属性为length
。
答案 1 :(得分:0)
这是获取getElementById
返回的元素数量的方式:
var xxx = (document.getElementById('ele1') === null) ? 0 : 1;
如果没有元素与getElementById
匹配,则 null
会返回id
。如果函数未返回null
,则只有一个元素符合条件。查看更多here。
答案 2 :(得分:0)
你注释掉的那条线是对的:
//var xxx = document.getElementsByClassName('test');
getElementsByClassName
返回DOM元素的集合,它具有length
属性。请注意,此方法元素是复数形式。 length
表示集合中的元素数量。
然而,你误解了getElementById
。此方法仅返回DOM元素(如果没有这样的元素,则返回null
)。请注意,此方法元素是单数形式。 DOM元素通常没有length
属性。
您的代码中的另一个问题,ID应该在页面中唯一。如果您有两个或多个具有相同ID的元素,那就是非法标记。在这种情况下,你会得到意想不到的结果。