for 迴圈中 帶入document 的 children 會出現錯誤的情況

拜亞
各位先進好,我在使用 js 的 for 迴圈時遇到了問題!


<div id="txt">
    <a>good</a>
    <a>god</a>
    <a>tool</a>
</div>
<div id="tes"></div>

<script type="text/javascript">
    var str=document.getElementById('txt').children;
    var strII='', i=0;
    for(var t in str){
        strII+=i+++str[t].innerHTML+' ';
    }
    document.getElementById('txt').innerHTML=strII;
</script>


上述程式執行會顯示

0good 1god 2tool NaN NaN NaN

莫名多了 三個 NaN NaN NaN,且 i++ 對於最後三次迴圈是沒有累加的!

但如果將 I++ 用字串括號起來:
strII+='('+(i++)+')'+str[t].innerHTML+' ';


顯示就變成

(0)good (1)god (2)tool (3)undefined (4)undefined (5)undefined

i++ 累加了每一次,原本 NaN 變成 undefined 。

由於我需要在 for 迴圈中刪除多餘字串,使用時才發現這個問題。

如果使用 for(var s=0; s<str. length; s++) 方式處理,就可以避免多出NaN陣列問題。

最有價值解答

迷路
可以參考這篇文章
https://pjchender.blogspot.com/2016/06/javascript-for-in-function.html
拜亞
喔喔喔喔 感謝提提公這個資訊,原來會有這樣的一個情況!!!!!
回到頂部