我有一个包含页面上所有元素的数组。在遍历数组时如何测试元素是否没有子元素?我宁愿继续使用标准的 javascript。这是解释它的伪代码:
for each element in elementlist:
if element is childless:
do something
else:
do something different
我有一个包含页面上所有元素的数组。在遍历数组时如何测试元素是否没有子元素?我宁愿继续使用标准的 javascript。这是解释它的伪代码:
for each element in elementlist:
if element is childless:
do something
else:
do something different
您可以使用返回布尔值的hasChildNodes方法
element.hasChildNodes();
使用纯 JS,您可以测试 elem.firstChild 是否为空,使用 jQuery,您可以使用 elem.children().length > 0 进行测试
您可以使用 检索子节点的数量element.childNodes.length
。如果它等于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]));
}
如果数组很长,请尝试使用
var z=arr.length;
for (var x = 0; x < z ; x += 1){
console.log(isChildless(arr[x]));
它会计算一次长度。在前面的示例中,它在每个循环中计算 arr.length。