每次调用变量时,如何在变量内部递增一个整数?Javascript
每次调用变量时,如何在变量内部递增一个整数?Javascript每次调用变量时,如何在变量内部递增一个整数?Javascript,javascript,integer,increment,Javascript,Integer,Increment,每次调用变量时,如何在变量内部递增一个整数?Javascript var a=0; var t=loadXMLDoc("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist="+x[a].getElementsByTagName("name")[0].childNodes[0].nodeValue+"&api_key=83e386b0ba08735e3dee9b118478e56d&lang=en"
var a=0;
var t=loadXMLDoc("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist="+x[a].getElementsByTagName("name")[0].childNodes[0].nodeValue+"&api_key=83e386b0ba08735e3dee9b118478e56d&lang=en").getElementsByTagName("bio");
for (i=0;i<20;i++)
{
document.write("<div><button type='button' onclick='document.getElementById("+i+").innerHTML=t[0].getElementsByTagName(\"summary\")[0].childNodes[1].nodeValue;'>Open Bio</button></div>");
}
var a=0;
var t=loadXMLDoc(“http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=“+x[a].getElementsByTagName(“名称”)[0].childNodes[0].nodeValue+”&api_key=83e386b0ba08735e3dee9b118478e56d&lang=en”).getElementsByTagName(“bio”);
对于(i=0;i如果我正确理解了您的问题,您可以为属性定义自己的getter和setter
var o = {}
o.__defineSetter__('property', function(value) { this._counter = 0; this._holder = value; })
o.__defineGetter__('property', function() { console.log(this._counter++); return this._holder; })
每次为o.property赋值时,计数器都会重置
o.property = 'Some value'
然后每次访问该属性时都会增加。
所以
将打印
0
Some value
1
Some value
如果你再做一次,它就会打印出来
0
Some value
1
Some value
编辑之后,我想我现在可以看到您的问题了。您需要将loadXMLDoc
语句放入循环中(因为您要加载20个不同的XML文件),但不能将每次调用的结果分配给同一个变量t
——因为一旦单击按钮,处理程序将计算t
,并仅获取最后一个值
相反,请使用数组:
var bios = []; // empty array
for (var i=0; i<20; i++) {
var artist = x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue,
doc = loadXMLDoc("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist="+artist+"&api_key=83e386b0ba08735e3dee9b118478e56d&lang=en"),
bio = doc.getElementsByTagName("bio")[0].getElementsByTagName("summary")[0].childNodes[1].nodeValue;
bios[i] = bio; // store it in the array
document.write("<div><button type='button' onclick='document.getElementById("+i+").innerHTML=bios["+i+"];'>Open Bio</button></div>");
}
var bios=[];//空数组
对于(var i=0;iA变量没有被调用。a++有什么问题吗?你真的必须把t
放入循环中,否则它只会被计算一次。为什么这会改变输出,你现在得到的是什么?看看这里:你当然不需要a的括号。嗯,不。这太过分了,OP只需要增加在他编辑之后,我发现我没有正确理解他的问题。