这是我目前所拥有的,但我不能让v(i)表现得与v1相同。我究竟做错了什么? 我也试过下面那件也行不通的作品。
var x = "v" + i;
alert(x);
我的主要问题如下:
var v1 = document.getElementById("thing1").innerHTML; // = 100
var v2 = document.getElementById("thing2").innerHTML; // = 150
var v3 = document.getElementById("thing3").innerHTML; // = 200
for (i = 0; i < 4; i++) {
if ( v(i) != ""){
alert(v(i));
}
}
提前致谢:)
答案 0 :(得分:1)
你要做的事情并不容易实现。您必须将变量分配给窗口对象,然后从那里打印。
更好的解决方案是使用您自己的对象或数组来处理这个问题:
var v1 = document.getElementById("thing1").innerHTML; // = 100
var v2 = document.getElementById("thing2").innerHTML; // = 150
var v3 = document.getElementById("thing3").innerHTML; // = 200
var array = [v1,v2,v3];
for (i = 0; i < 4; i++) {
if ( array[i] != ""){
alert(array[i]);
}
}
答案 1 :(得分:0)
您可以在不使用单个变量的情况下使用数组并循环它。
var array = [
'100', // document.getElementById("thing1").innerHTML,
'150', // document.getElementById("thing2").innerHTML,
'200' // document.getElementById("thing3").innerHTML
],
i;
for (i = 0; i < array.length; i++) {
if (array[i] !== "") {
console.log(array[i]);
}
}
如果您需要某些键,则可以使用对象。
var object = {
v1: '150', // document.getElementById("thing1").innerHTML,
v2: '200', // document.getElementById("thing2").innerHTML,
v3: '250', // document.getElementById("thing3").innerHTML
},
i;
for (i = 1; i <= 3; i++) {
if (object['v' + i] !== "") {
console.log(object['v' + i]);
}
}
答案 2 :(得分:0)
所有全局变量都是window
对象的属性,您可以使用window['v'+ i]
或this['v'+ i]
来创建它们。
但是考虑使用对象,这是非常糟糕的模式。
答案 3 :(得分:0)
您要做的是获取插值变量名称,这在javascript中是不可能的。
您可以使用this['v'+i]
或window['v'+i]
执行此操作,这些都是全局范围内的不良主意。
v(i)
实际上意味着:使用参数v(...)
i
如果我用简单易懂的javascript编写你的示例代码,我会想出这个:
for(var i = 1; i <= 4; i++)
{
var html = document.getElementById('thing'+i).innerHTML;
alert(html);
}
如果您想要数组中的值,请不要将相同的代码写入6次:
var ids = ['thing1','thing2','thing3','thing4'];
// es5
var values = [];
for(var i = 0; i < ids.length; i++)
{
var html = document.getElementById( ids[i] ).innerHTML;
values.push( html );
}
// values now contains all the values of the elements
// OR es 6
var values = ids.map(function(id) { return document.getElementById(id).innerHTML; });
// or
var values = ids.map(id => document.getElementById(id).innerHTML);