我尝试制作这样的代码:
var code1 = a, code2 = b, code3 = c;
var x = 3;
for (y = 1; y <= x; y++) {
//this part where i dont know about
alert ();
}
那么如何让它警告code1,code2和code3?我的意思是这会警告值a,b和c。
我尝试使用alert("code"+y);
和alert(code+y);
,但它不会这样做。
答案 0 :(得分:9)
那么如何让它警告code1,code2和code3?我的意思是警告值a,b和c?
最好的方法是使用数组而不是离散的code1
,code2
和code3
变量:
// (I assume a, b, and c have already been declared somewhere, or that your real
// code has literals?)
var codes = [a, b, c];
var y;
for (y = 0; y < codes.length; y++) {
alert(codes[y]);
}
(请注意,我在另一个地方开始y
。)
虽然可能使用全局变量执行code1
,code2
,code3
事件,但应尽可能避免使用全局变量,并且几乎总是如此可能。 (也可以使用局部变量,但你必须使用eval
或其表兄Function
构造函数,并且避免eval
也是你应该避免的事情可能的,几乎总是可能的。:-))
或者,如果您发现自己想要在数组不太合理的情况下执行此操作,则可以改为使用对象:
var codes = {
code1: a,
code2: b,
code3: c
};
var y;
for (y = 1; y <= 3; ++y) {
alert(codes["code" + y]);
}
这是有效的,因为在JavaScript中,您可以使用点表示法和文字(obj.foo
)或括号表示法和字符串(obj["foo"]
)来访问对象属性,在后一种情况下, string可以是任何表达式的结果。由于"code" + y
是code1
y
1
codes["code" + y]
,"code1"
会在codes
上查找属性y
({{1}时1
是} {{1}})。
答案 1 :(得分:5)
alert(window["code"+y]);
我宁愿建议您使用像
这样的数组var code = [1, 2, 3];
for (y = 0; y < code.length; y++) {
alert(code[y]);
}