JavaScript:无法从innerHTML内容中读取所有元素
我试图读取div的innerHTML中的元素,但似乎正在读取其他元素 代码块:JavaScript:无法从innerHTML内容中读取所有元素,javascript,Javascript,我试图读取div的innerHTML中的元素,但似乎正在读取其他元素 代码块: <!DOCTYPE html> <html> <body> <script type="text/javascript"> var tdiv=document.createElement("div"); tdiv.innerHTML="<span>a1</span><span>a2</sp
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
var tdiv=document.createElement("div");
tdiv.innerHTML="<span>a1</span><span>a2</span><span>a3</span><span>a4</span><span>a5</span>";
var cn=tdiv.getElementsByTagName("*");
var len=cn.length;
console.log("length: "+len);
console.log("tdiv len: "+tdiv.getElementsByTagName("*").length);
for(var i=0;i<len;i++){
if(cn[i]){
console.log(i+": "+cn[i].nodeName+": "+cn[i].tagName);
document.body.appendChild(cn[i]);
}
}
</script>
</body>
</html>
var tdiv=document.createElement(“div”);
tdiv.innerHTML=“a1a2a3a4a5”;
var cn=tdiv.getElementsByTagName(“*”);
var len=cn.长度;
控制台日志(“长度:+len”);
log(“tdiv len:+tdiv.getElementsByTagName(“*”).length);
for(var i=0;i返回的项是一个活动项。您将它们附加到body
元素,因此节点列表随着for
循环的每次迭代而收缩。这就是导致它看起来像是任意跳过元素的原因
试试看
while (cn.length) {
cn[0] && document.body.appendChild(cn[0]);
}
当我在所有跨度之间添加空格时,所有元素都被读取。这是预期的行为吗?如果是,为什么
是的,这是意料之中的。这只是意味着它没有跳过span
元素,而是跳过空格引入的文本节点。永远不要依赖于此,它非常脆弱。谢谢,我通过在for循环中添加I和len来更正代码,现在每个元素都被附加到body中。再次感谢。!!