<ul id="a">
<li><a href="a1">a1</a></li>
<li><a href="a2">a2</a></li>
<li><a href="a3">a3</a></li>
</ul>
<script>
(function(){
var a = document.getElementById('a').getElementsByTagName('a');
var b = 0;
for(var c=0; c < a.length; c++){
alert(a[c].innerHTML + " "+b);
b++;
}
for(var i in a){
alert(a[i].innerHTML + " "+b);
b++;
}
}())
</script>
使用for是理想的結果,但是使用for in卻多輸出幾次,最後結論是for in在遍歷DOM對象的時候,並不是說下標值就是當前對象,而A對象當中還有其它特殊的,在IE下會先彈undefined,再彈1 2 3,在火狐和CR下,先彈123再彈兩次undefinde,詳細求解釋?
使用fon in我能想到的就是節點屬性和文本屬性兩個東西,A對象包含兩個屬性。所以要多彈幾次。
試問,我的JS代碼該放哪兒?這也太那個了吧。。。。點了插入代碼有個毛線用?
對於數組方式的,用for(var c=0;c<a.length;c++)這中方式合適。不建議用for in的方式。
for in的方式會把擴展的原型等屬性都給枚舉出來,多出來的就是類似length數組長度這種屬性。假如哪天誰把數據在擴充一下或者引入一下第三方包把數組給擴充了,就悲劇了。