使用变量名称的计数器

时间:2017-03-23 16:00:41

标签: javascript

这是我目前所拥有的,但我不能让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));
        }
}

提前致谢:)

4 个答案:

答案 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);