我试过这个循环,但是没有工作(语法错误)。 这样做的正确方法是什么? up + i不起作用。
for(i=0;i<10;i++) {
up+i = function() {
base.refresh("Field"+i, $t+i);
}
}
答案 0 :(得分:3)
主要问题是围绕这一行
up+i = function() {
表达式up+i
生成一个值,而不是一个变量,以及一个可以赋值的位置。您是否尝试将其分配到数组中?如果是这样,请将其更改为以下
up[i] = function() {
修改强>
OP澄清说,目的是创建10个命名函数。在这种情况下,需要有一个对象将它们挂起。我将其称为root用于示例var root = {};
for (i = 0; i < 10; i++) {
root['up' + i] = function() {
base.refresh("Field"+i, $t+i);
};
}
此外,此功能正在捕获单个i
,这意味着该函数的所有实例将具有i
的相同值。为了防止这种情况,请使用单独的函数来捕获值。
var root = {};
for (i = 0; i < 10; i++) {
root['up' + i] = function(arg) {
return function() { base.refresh("Field"+arg, $t+arg); };
} (i);
}
答案 1 :(得分:1)
负责循环的代码工作。请看这里:http://jsfiddle.net/7aZLv/(警告!一个接一个地打开10个警告框)
修改强>
您可以创建这样的全局函数:http://jsfiddle.net/7aZLv/1/
for(i=0;i<10;i++) {
window['up'+i] = function(){
alert('test');
}
}
up3(); // will make alert appear
发生错误是因为您的赋值表达式不正确(您为表达式指定了值,而不是变量应该如何指定它)。
答案 2 :(得分:0)
也许应该只是
for(i=0;i<10;i++) {
up = function() {
base.refresh("Field"+i, $t+i);
}
}
?我们需要大量的信息来帮助你,应该是什么,你想要完成什么?你得到了什么语法错误?
答案 3 :(得分:0)
您不能在作业的左侧有表达式。是up+i
应该是指针算术吗?如果是这样,javascript中没有指针。我不知道你要做什么,但要做的第一件事就是将up+i = function() { ...}
更改为up = function() {...}
,否则也会获得一个新变量来分配它。
答案 4 :(得分:0)
代码中有很多错误。
向上 是字符串? $ T 这是什么?
也许是这样的?
for(i=0;i<10;i++) {
var new_func = 'up' + i;
new_func = function() {
base.refresh("Field"+i, $t+i);
}
}
答案 5 :(得分:0)
您可以将它们添加到数组中,而不是尝试为函数创建单个变量。
var ups;
for(i=0;i<10;i++) {
ups.push(function() {
base.refresh("Field"+i, $t+i);
});
}
答案 6 :(得分:0)
试试这个
for(i=0;i<10;i++) {
window["up" +i] = function() {
base.refresh("Field"+i, $t+i);
}
}
这会将函数添加到window
对象中,以便您可以在此之后进行如下调用:
up0();
up1();
// etc