jQuery变量声明

3

一切都很顺利,但当我声明变量 answeredQ+i 时会出错。

var count = 5;
for(var i=0;i<count;i++){
    var className = '.myclass'+i;
    var answeredQ+i = $(className).map(function(){
        return $(this).text();
    }).get();
}

使用 eval ...... - Mahi
那么如何使用它呢? - Dev
http://www.w3schools.com/jsref/jsref_eval.asp - Mahi
你打算用这个变量做什么? - Aruna
@Dev 为什么你需要一个名为 answeredQ1answeredQ2,... 的变量? - Weedoze
@Dev,你需要告诉我们为什么选择使用动态变量,这样我们或许可以帮你找到更好的解决方案。 - Rajshekar Reddy
3个回答

1
var count = 5;
var answered = {};
for(var i=0;i<count;i++){
    var className = '.myclass'+i;
    answered['Q' + i] = $(className).map(function(){
        return $(this).text();
    }).get();
}

现在您可以使用answered.Q1answered['Q1']来访问第一个变量,使用Q2来访问第二个变量,以此类推。
您所尝试实现的是所谓的“可变变量”。许多编程语言都支持它,但在Javascript中并没有直接的答案,因此您必须使用数组或对象来包含新变量。
了解有关“可变变量”的更多详细信息:"Javascript中的“可变”变量?

0

使用 window['answeredQ'+i],但是你最好将答案分配给一个数组,而不是直接分配给全局作用域。

var count = 5;
for (var i = 0; i < count; i++) {
  var className = '.myclass' + i;
  window['answeredQ' + i] = $(className).map(function() {
    return $(this).text();
  }).get();
}


这个 window['answeredQ'+i] 会在全局作用域中创建变量,对吗? - Aruna
是的,正如所说,这并不理想。 - synthet1c
如何在 for 循环外部使用 __window['answeredQ'+i]__? - Dev
它与在全局范围内(函数外部)声明的任何变量相同:answeredQ0window.answeredQ0window['answeredQ0'] - synthet1c

0

由于此变量声明无效,您可以使用一个对象来保存所有这些动态键,并在for循环之外使用相同的对象,如下所示。

var count = 5;
var answers = {};

for(var i=0;i<count;i++){
    var className = '.myclass'+i;
    answers['answeredQ' + i] = $(className).map(function(){
        return $(this).text();
    }).get();
}

console.log(answers);

Object.keys(answers).forEach(function(key) {
  console.log(key + ': ');
  console.log(answers[key]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接