JavaScript 數(shù)據(jù)元素集合與數(shù)組的區(qū)別說明
更新時間:2010年05月06日 21:45:03 作者:
我們在獲取一組頁面元素時常會用到getElementsByName()或是getElementsByTagName()方法。
其中getElementsByName(name)方法是獲取頁面中所有具有name屬性的元素,但這個方法在IE與標準瀏覽器中所取到的內(nèi)容不一樣。在IE中getElementsByName(name)方法所取到的元素是其本身就自帶有name屬性也就是form表單中所列出的所有元素(這些元素本身就自帶有name屬性);標準瀏覽器中getElementsByName(name)方法所取到的元素是具有name屬性的元素(本身就帶有此屬性+人為添加的此屬性)。所以如果在IE瀏覽器中用此方法來獲取頁面中所有帶有name的元素時,只能取出其自身本來就具有此屬性的那些元素(表單類元素)而那些人為添加的name屬性元素則不會被取出來;標準瀏覽器則不會這樣,它會將頁面中所有帶name屬性的元素全部取出。
getElementsByName()與getElementsByTagName()方法的共同之類是它們會把所取得的頁面元素組成一個元素集合并非是數(shù)組(雖然用firebug中的console.log()打印出來時是數(shù)組的形式)。如果用Object.porototype.toString.apply(arr)方法來查看取得的數(shù)據(jù)結果時,其返回的是“[object HTMLCollection]”而不是“[object Array]”。這樣一來用這兩種方法所取得的元素集合就不能像使用數(shù)組一樣來調(diào)用數(shù)組的一些方法進行操作了而需要將此集合進行轉換,將元素集合轉換為數(shù)組的形式就可以像操作數(shù)組一樣對里面的元素進行處理了。
這個元素集合具有如下的屬性和方法:
1、元素索引(index)
2、元素集合的長度(length)
3、item()方法:通過傳入不同的索引值可以取得集合中相應的元素。IE下沒有此方法。
4、FF中還有一個namedItem(name)方法,取得具有name屬性的第一個元素。只有FF下有這個方法。
關于元素集合向數(shù)組形式的轉換方法有很多種,大家可以在網(wǎng)上搜索一下就有很多。也可以到司圖正美的這篇《js將類數(shù)組對象轉換成數(shù)組對象》博文中學習一。
以下是一個數(shù)組轉換的方法:
function makeArray(arr){
if(arr.item){
var len = arr.length;
var array = [];
while(len--){
array[len] = arr[len];
}
return array;
}
return Array.prototype.slice.call(arr);
}
這是一個小例子,可以看一下轉換后的結果:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
getElementsByName()與getElementsByTagName()方法的共同之類是它們會把所取得的頁面元素組成一個元素集合并非是數(shù)組(雖然用firebug中的console.log()打印出來時是數(shù)組的形式)。如果用Object.porototype.toString.apply(arr)方法來查看取得的數(shù)據(jù)結果時,其返回的是“[object HTMLCollection]”而不是“[object Array]”。這樣一來用這兩種方法所取得的元素集合就不能像使用數(shù)組一樣來調(diào)用數(shù)組的一些方法進行操作了而需要將此集合進行轉換,將元素集合轉換為數(shù)組的形式就可以像操作數(shù)組一樣對里面的元素進行處理了。
這個元素集合具有如下的屬性和方法:
1、元素索引(index)
2、元素集合的長度(length)
3、item()方法:通過傳入不同的索引值可以取得集合中相應的元素。IE下沒有此方法。
4、FF中還有一個namedItem(name)方法,取得具有name屬性的第一個元素。只有FF下有這個方法。
關于元素集合向數(shù)組形式的轉換方法有很多種,大家可以在網(wǎng)上搜索一下就有很多。也可以到司圖正美的這篇《js將類數(shù)組對象轉換成數(shù)組對象》博文中學習一。
以下是一個數(shù)組轉換的方法:
復制代碼 代碼如下:
function makeArray(arr){
if(arr.item){
var len = arr.length;
var array = [];
while(len--){
array[len] = arr[len];
}
return array;
}
return Array.prototype.slice.call(arr);
}
這是一個小例子,可以看一下轉換后的結果:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
相關文章
JavaScript實現(xiàn)JSON合并操作示例【遞歸深度合并】
這篇文章主要介紹了JavaScript實現(xiàn)JSON合并操作,結合實例形式分析了javascript基于遞歸深度實現(xiàn)json合并操作相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下2018-09-09JavaScript通過mouseover()實現(xiàn)圖片變大效果的示例
下面小編就為大家分享一篇JavaScript通過mouseover()實現(xiàn)圖片變大效果的示例,具有很好的參考價值,希望對大家有所幫助2017-12-12詳解vue.js根據(jù)不同環(huán)境(正式、測試)打包到不同目錄
這篇文章主要介紹了詳解vue.js根據(jù)不同環(huán)境(正式、測試)打包到不同目錄,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07javascript小組件 原生table排序表格腳本(兼容ie firefox opera chrome)
javascript小組件 原生table排序表格腳本 兼容ie firefox opera chrome,需要的朋友可以參考下2012-07-07