1

我有一个包含页面上所有元素的数组。在遍历数组时如何测试元素是否没有子元素?我宁愿继续使用标准的 javascript。这是解释它的伪代码:

for each element in elementlist:
    if element is childless:
        do something
    else:
        do something different
4

5 回答 5

2

您可以使用返回布尔值的hasChildNodes方法

element.hasChildNodes(); 
于 2013-02-08T22:45:58.600 回答
0

使用纯 JS,您可以测试 elem.firstChild 是否为空,使用 jQuery,您可以使用 elem.children().length > 0 进行测试

于 2013-02-08T22:05:51.293 回答
0

您可以使用 检索子节点的数量element.childNodes.length。如果它等于0,则该节点是无子节点。

于 2013-02-08T22:05:59.463 回答
0

这是一个简单的解决方案和演示。这包括具有作为文本节点的子元素的元素。

var arr = [document.getElementById("a1"),
           document.getElementById("a2"),
           document.getElementById("a3"),
           document.getElementById("a4")];

var isChildless = function(ele){
    return ele.childNodes.length <= 0;
}

for (var x = 0; x < arr.length; x++){
    console.log(isChildless(arr[x]));
}

http://jsfiddle.net/HTbuB/1/

于 2013-02-08T22:09:54.213 回答
0

如果数组很长,请尝试使用

 var z=arr.length;
 for (var x = 0; x < z ; x += 1){
 console.log(isChildless(arr[x]));

它会计算一次长度。在前面的示例中,它在每个循环中计算 arr.length。

于 2013-02-08T22:58:12.013 回答