第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將DOM節(jié)點(diǎn)列表轉(zhuǎn)換為Javascript中的數(shù)組?

如何將DOM節(jié)點(diǎn)列表轉(zhuǎn)換為Javascript中的數(shù)組?

桃花長相依 2019-12-26 10:12:21
我有一個(gè)接受HTML節(jié)點(diǎn)列表的Javascript函數(shù),但它需要一個(gè)Javascript數(shù)組(它在該數(shù)組上運(yùn)行一些Array方法),并且我想向其提供Document.getElementsByTagName返回DOM節(jié)點(diǎn)列表的輸出。最初,我想到了使用簡單的方法:Array.prototype.slice.call(list,0)而且,這在所有瀏覽器中都可以正常工作,除了Internet Explorer會(huì)返回錯(cuò)誤“ JScript對象預(yù)期”外,因?yàn)镈ocument.getElement*方法返回的DOM節(jié)點(diǎn)列表顯然不足以成為函數(shù)調(diào)用目標(biāo)的JScript對象。注意事項(xiàng):我不介意編寫Internet Explorer特定的代碼,但是我不允許使用任何Javascript庫(例如JQuery),因?yàn)槲艺诰帉懸度氲降谌骄W(wǎng)站中的小部件,并且無法加載外部庫會(huì)給客戶帶來沖突。我最后的努力是遍歷DOM節(jié)點(diǎn)列表并自己創(chuàng)建一個(gè)數(shù)組,但是有沒有更好的方法呢?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

ECMAScript規(guī)范指出:NodeLists是宿主對象,Array.prototype.slice不能保證在宿主對象上使用方法可以正常工作。


slice函數(shù)是否可以成功應(yīng)用于宿主對象取決于實(shí)現(xiàn)。


我建議您做一個(gè)簡單的函數(shù)來遍歷NodeList并將每個(gè)現(xiàn)有元素添加到數(shù)組中:


function toArray(obj) {

  var array = [];

  // iterate backwards ensuring that length is an UInt32

  for (var i = obj.length >>> 0; i--;) { 

    array[i] = obj[i];

  }

  return array;

}

更新:


正如其他答案所建議的那樣,您現(xiàn)在可以在現(xiàn)代環(huán)境中使用傳播語法或Array.from方法:


const array = [ ...nodeList ] // or Array.from(nodeList)

但是考慮一下,我想將NodeList轉(zhuǎn)換為Array的最常見用例是對其進(jìn)行迭代,現(xiàn)在該NodeList.prototype對象具有本forEach機(jī)方法,因此,如果您在現(xiàn)代環(huán)境中,則可以直接使用它,也可以使用滿溢的

查看完整回答
反對 回復(fù) 2019-12-26
  • 3 回答
  • 0 關(guān)注
  • 1149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)