Javascript 如何将参数传递到内部函数
我没有设法将I作为参数从onready传递到setInterval,因此同时我解析了循环:Javascript 如何将参数传递到内部函数,javascript,Javascript,我没有设法将I作为参数从onready传递到setInterval,因此同时我解析了循环: function myFunc() { myWidgets[0].onready = function(){ setInterval( function(){ var pVal = $('#Pv1').text(); myWidgets[0].setValue(pVal); }, 1000); }; myWidgets[1].onready = fun
function myFunc() {
myWidgets[0].onready = function(){
setInterval( function(){
var pVal = $('#Pv1').text();
myWidgets[0].setValue(pVal);
}, 1000);
};
myWidgets[1].onready = function(){
setInterval( function(){
var pVal = $('#Pv2').text();
myWidgets[1].setValue(pVal);
}, 1000);
};
myWidgets[2].onready = function(){
setInterval( function(){
var pVal = $('#Pv3').text();
myWidgets[2].setValue(pVal);
}, 1000);
};
如何添加I作为参数
以下操作不起作用,setInterval中的内部函数中未定义i:
myWidgets[i].onready = function(i){
setInterval( function(i){
var j = i + 1;
var pVal = $('#Pv' + j).text();
myWidgets[i].setValue(pVal);
}, 1000);
};
你能做什么,但我不知道这是否是你问题的答案
for(var i = 0; i < 3; i++) {
myWidgets[i].onready = function(){
setInterval( function(){
var pVal = $('#Pv' + (i+1) ).text();
myWidgets[i].setValue(pVal);
}, 1000);
};
}
您可以使用enclosure使i的当前值可通过onready访问:
如果没有机柜,它无法使用i的当前值的原因是它不会在循环的当前步骤使用该值。相反,当onready发生时,它将使用i的值,当循环结束时,i的值已经达到最大值。您可以简单地使用函数外壳
for (var i=0; i<3; i++) {
(function(i) {
myWidgets[i].onready = function() {
setInterval(function(){
var pVal = $('#Pv'+(i+1)).text();
myWidgets[i].setValue(pVal);
}, 1000);
};
})(i);
}
您需要阅读您尝试使用的API的文档 我会告诉你: 语法
你是在循环中运行它,还是像你发布的那样?使$'Pv'+j.text;使用j.toString
for (var i=0;i<3;i++) {
(function(x){
myWidgets[x].onready = function(){
setInterval(function(){
var pVal = $('#Pv' + (x+1) ).text();
myWidgets[x].setValue(pVal);
}, 1000);
}
})(i);
}
for (var i=0; i<3; i++) {
(function(i) {
myWidgets[i].onready = function() {
setInterval(function(){
var pVal = $('#Pv'+(i+1)).text();
myWidgets[i].setValue(pVal);
}, 1000);
};
})(i);
}
var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);
for(var i = 0; i < 3; i++) {
myWidgets[i].onready = function(){
setInterval( function(j){
var pVal = $('#Pv' + (j+1) ).text();
myWidgets[j].setValue(pVal);
}, 1000, i);
};
}
Try this. The case you are referring to is closure
myWidgets = [];
for(var i = 0; i < 3; i++) {
myWidgets[i].onready = (function(i){
return function(){setInterval( function(){
var pVal = $('#Pv' + (i+1) ).text();
myWidgets[i].setValue(pVal);
console.log(i)
}, 1000);}
})(i);
}