-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 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 回答
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而不是多次执行查询。
  • 我缓存lengthinfoTags. infoTags.length这避免了在每次迭代时访问多个属性查找。JavaScript 中的属性查找非常昂贵。

要了解如何使用数组,请查看Array对象。-

于 2013-10-28T15:21:31.123 回答