JavaScript:无法从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

我试图读取div的innerHTML中的元素,但似乎正在读取其他元素

代码块:

<!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中。再次感谢。!!