-1

私は次のJavaScriptを持っています

information0 = xmlDoc.getElementsByTagName("info")[0].textContent; 
information1 = xmlDoc.getElementsByTagName("info")[1].textContent;
information2 = xmlDoc.getElementsByTagName("info")[2].textContent; 
information3 = xmlDoc.getElementsByTagName("info")[3].textContent;
information4 = xmlDoc.getElementsByTagName("info")[4].textContent;
information5 = xmlDoc.getElementsByTagName("info")[5].textContent;
information6 = xmlDoc.getElementsByTagName("info")[6].textContent;

インデックス番号ごとに新しい var を作成したい。全部で600あります。forループを使用してこれを行うにはどうすればよいですか?

前もって感謝します

4

4 に答える 4

2

ここでの最善の方法は、個々の変数の集まりではなく、配列を使用することです。

var information = [];
var index;
var info = xmlDoc.getElementsByTagName("info");
for (index = 0; index < info.length; ++index) {
    information[index] = info[index].textContent;
}
于 2013-10-28T15:19:27.240 に答える
1

ええと...配列を使用しますか?また、何度も電話しないでくださいgetElementsByTagName、それは高価です!

var tags = xmlDoc.getElementsByTagName('info'), l = tags.length, i, information = [];
for( i=0; i<l; i++) information[i] = tags[i].textContent;

かなり最新のブラウザを使用している場合:

var information = [].map.call(xmlDoc.getElementsByTagName('info'),function(a) {return a.textContent;});
于 2013-10-28T15:20:09.483 に答える
0

配列を使用する必要があります。

var infoTags = xmlDoc.getElementsByTagName("info"),
    i = 0,
    len = infoTags.length,
    values = []; //array literal syntax, you could also use new Array()

for (; i < len; i++) {
    values.push(infoTags[i].textContent); //push the textContent into the array
}

注意すべきこと:

  • getElementsByTagNameクエリを複数回実行する代わりに、結果をキャッシュしました。
  • lengthのプロパティをキャッシュしましたinfoTagsinfoTags.lengthこれにより、反復ごとに複数のプロパティ ルックアップにアクセスする必要がなくなります。JavaScript では、プロパティ ルックアップのコストが高くなります。

配列を操作する方法を知るには、Arrayオブジェクトを見てください。-

于 2013-10-28T15:21:31.123 に答える
0

このような:

var information = [],
    i,
    elements = xmlDoc.getElementsByTagName("info"),
    n = elements.length;
for (i = 0; i < n; ++i) {
    information[i] = elements[i].textContent;
}
于 2013-10-28T15:20:06.917 に答える