欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 數(shù)據(jù)元素集合與數(shù)組的區(qū)別說明

 更新時(shí)間:2010年05月06日 21:45:03   作者:  
我們?cè)讷@取一組頁面元素時(shí)常會(huì)用到getElementsByName()或是getElementsByTagName()方法。
其中g(shù)etElementsByName(name)方法是獲取頁面中所有具有name屬性的元素,但這個(gè)方法在IE與標(biāo)準(zhǔn)瀏覽器中所取到的內(nèi)容不一樣。在IE中g(shù)etElementsByName(name)方法所取到的元素是其本身就自帶有name屬性也就是form表單中所列出的所有元素(這些元素本身就自帶有name屬性);標(biāo)準(zhǔn)瀏覽器中g(shù)etElementsByName(name)方法所取到的元素是具有name屬性的元素(本身就帶有此屬性+人為添加的此屬性)。所以如果在IE瀏覽器中用此方法來獲取頁面中所有帶有name的元素時(shí),只能取出其自身本來就具有此屬性的那些元素(表單類元素)而那些人為添加的name屬性元素則不會(huì)被取出來;標(biāo)準(zhǔn)瀏覽器則不會(huì)這樣,它會(huì)將頁面中所有帶name屬性的元素全部取出。

getElementsByName()與getElementsByTagName()方法的共同之類是它們會(huì)把所取得的頁面元素組成一個(gè)元素集合并非是數(shù)組(雖然用firebug中的console.log()打印出來時(shí)是數(shù)組的形式)。如果用Object.porototype.toString.apply(arr)方法來查看取得的數(shù)據(jù)結(jié)果時(shí),其返回的是“[object HTMLCollection]”而不是“[object Array]”。這樣一來用這兩種方法所取得的元素集合就不能像使用數(shù)組一樣來調(diào)用數(shù)組的一些方法進(jìn)行操作了而需要將此集合進(jìn)行轉(zhuǎn)換,將元素集合轉(zhuǎn)換為數(shù)組的形式就可以像操作數(shù)組一樣對(duì)里面的元素進(jìn)行處理了。

這個(gè)元素集合具有如下的屬性和方法:

1、元素索引(index)

2、元素集合的長(zhǎng)度(length)

3、item()方法:通過傳入不同的索引值可以取得集合中相應(yīng)的元素。IE下沒有此方法。

4、FF中還有一個(gè)namedItem(name)方法,取得具有name屬性的第一個(gè)元素。只有FF下有這個(gè)方法。

關(guān)于元素集合向數(shù)組形式的轉(zhuǎn)換方法有很多種,大家可以在網(wǎng)上搜索一下就有很多。也可以到司圖正美的這篇《js將類數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組對(duì)象》博文中學(xué)習(xí)一。

以下是一個(gè)數(shù)組轉(zhuǎn)換的方法:
復(fù)制代碼 代碼如下:

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);
}

這是一個(gè)小例子,可以看一下轉(zhuǎn)換后的結(jié)果:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

相關(guān)文章

最新評(píng)論