2017-09-26 99 views
-1

我试图做这样的事情:对于声明一个变量

for (var i = 1; i <= va; i++) { 
    var "v" + i + "x" = document.getElementById("v" + i + "x"); 
    var "v" + i + "y" = document.getElementById("v" + i + "y"); 
    var "v" + i + "r" = document.getElementById("v" + i + "r"); 
} 

但我不知道怎么做是正确的。

+0

添加更多你愿意做的代码。 –

+3

你究竟想要做什么?动态变量名称?停止你在做什么,然后用一个数组来代替。 – Teemu

+0

是Teeemu im试图自动生成变量 –

回答

3

动态变量通常不是一种好的做法。你应该避免它们。一个更好的解决办法是创建一个对象,包含他们像这样:

var obj = {}; 

for (var i = 1; i <= va; i++) { 

    obj["v" + i + "x"] = document.getElementById("v" + i + "x"); 
    obj["v" + i + "y"] = document.getElementById("v" + i + "y"); 
    obj["v" + i + "r"] = document.getElementById("v" + i + "r"); 

} 

之后,您可以访问像元素:

console.log(obj["v1r"]); // Node with id v1r reference 
console.log(obj["v5x"]); // Node with id v5x reference 
+0

我该如何使用这个对象,就像我想做一个警报一样,我会写警报(v1x);和警报(v25x); ?因为在你的Awnser用控制台日志输出:“”这就是我的输入不是变量.....哦,我刚刚意识到我在结尾处忘了.value -_-对不起 –

+0

@OfficielFreaks,控制台日志示例输出对DOM中该元素的引用。要检查该输入的值,请执行以下操作:alert(obj [“v1r”]。value)' –

+0

nvm找到它 –

0

它看起来像你最好使用arrays

var elements = []; // init to an empty array 
for (var i = 1; i <= va; i++) { 
    elements[i] = []; // each array entry is itself an array 
    elements[i]['x'] = document.getElementById("v" + i + "x"); 
    elements[i]['y'] = document.getElementById("v" + i + "y"); 
    elements[i]['r'] = document.getElementById("v" + i + "r"); 
} 

然后使用适当的索引检索自己的价值观:

console.log(elements[1]['x']);