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>
出力: a1a3a5
注: a2 と a4 がありません。IE、FF、Chrome、Opera、Safari のすべてのブラウザで両方childNodes
を使用してみましたが、同じ動作が見られます。getElementsByTagName("*")
すべてのスパンの間に空白を追加すると、すべての要素が読み取られます。これは予想される動作ですか? もしそうなら、なぜですか?