Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每次调用变量时,如何在变量内部递增一个整数?Javascript_Javascript_Integer_Increment - Fatal编程技术网

每次调用变量时,如何在变量内部递增一个整数?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"

每次调用变量时,如何在变量内部递增一个整数?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").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只需要增加在他编辑之后,我发现我没有正确理解他的问题。