程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> js-關於getElementsByTagName獲取的DOM對象問題

js-關於getElementsByTagName獲取的DOM對象問題

編輯:編程綜合問答
關於getElementsByTagName獲取的DOM對象問題
<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數組長度這種屬性。假如哪天誰把數據在擴充一下或者引入一下第三方包把數組給擴充了,就悲劇了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved