ホームページ >ウェブフロントエンド >jsチュートリアル >js_javascriptスキルでHTMLCollection/NodeList/擬似配列を配列に変換するコード

js_javascriptスキルでHTMLCollection/NodeList/擬似配列を配列に変換するコード

WBOY
WBOYオリジナル
2016-05-16 18:04:171836ブラウズ

ここで、次の条件を満たすオブジェクトは疑似配列
1 と呼ばれ、長さ属性
2 を持ち、インデックスによるデータの格納
3 を持ち、配列のプッシュ、ポップ、その他のメソッド
を持たないものとします。
1. 関数内の引数。
2. document.forms、Form.elements、Select.options、document.getElementsByName()、document.getElementsByTagName()、childNodes/children などを通じて取得されるコレクション (HTMLCollection、NodeList)。
3.

var obj={};
obj[0] = "1";
obj[2] = "3"; .length = 3;


プッシュ、ポップ、シフト、結合などの一部の配列メソッドがありません。場合によっては、プッシュ、ポップ、その他のメソッドを使用できるように、これらの疑似配列を実際の配列に変換する必要があることがあります。以下はツール関数 makeArray です



コードをコピー
コードは次のとおりです: var makeArray = function(obj) { return Array.prototype.slice.call(obj,0);
}
try{
Array.prototype.slice.call(document.documentElement.childNodes, 0) )[0].nodeType;
}catch(e){
makeArray = function(obj){
for(var i=0,len=obj.length ; ires.push(obj[i]);
res
}
}


3 つの疑似配列



コードをコピー

コードは次のとおりです: //関数 fun を定義します内部的に makeArray を使用し、その引数は配列に変換されます。 function fun(){ var ary = makeArray(arguments); alert(ary.constructor ); Call
fun(3 ,5);

// ページ上に複数の段落要素 p があると仮定します
var els = document.getElementsByTagName("p"); makeArray(els);
alert(ary1.constructor);

//特殊な JS オブジェクト (jquery オブジェクトなど)
var
obj[0];一";
obj[1] = "二";
obj[2] = "三";
obj.length = 3;
var ary2 = makeArray(obj);
アラート(ary2.constructor);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。