11

現在の配列に項目を追加しようとしています。

var arrayValues = new Array();
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues = document.getElementsByTagName('a');
arrayValues.push("Value 3");

この方法でエラーが発生し、値 1 と値 2 を取得できません。ハイパーリンク コレクションを取得した後、新しい項目を追加しようとするとエラーがスローされます: オブジェクトは、プッシュ メソッドであるこのプロパティまたはメソッドをサポートしていません.

ハイパーリンクのコレクションが割り当てられた後、配列はどうなりますか? 新しいアイテムを追加するにはどうすればよいですか?

4

2 に答える 2

14

ということarrayValues.push(document.getElementsByTagName('a'));ですか?

それ以外の場合は、値をプッシュしたばかりの配列を上書きするNodeListによって返されたを割り当てています。getElementsByTagName()

補足:new Array()ここで使用する理由はありません。ただ書いてvar arrayValues = [];ください。

于 2011-03-08T03:52:10.480 に答える
2

すべての<a>要素を配列にプッシュする場合は、最初に NodeList を配列に変換する必要があります。ほとんどの人が使用しますArray.prototype.slice.call(nodelist)

配列を取得したらarray.push、 と組み合わせて使用​​して、function.applyそれらを 1 回の呼び出しでプッシュできます。

結果のコードは次のようになります。

var arrayValues = [];
arrayValues.push("Value 1");
arrayValues.push("Value 2");
arrayValues.push.apply(arrayValues, Array.prototype.slice.call(document.getElementsByTagName('a')));
arrayValues.push("Value 3");
于 2011-03-08T03:58:53.283 に答える