如何加入字符串和变量以在javascript中创建新变量?

时间:2018-01-13 21:57:00

标签: javascript string variables for-loop addeventlistener

为php找到了几个解决方案,但是找不到任何javascript。

基本上我正在尝试为我的页面上的30个按钮制作一堆eventlisteners。目前它写得像这样:

problem1buttonEl.addEventListener("click", problem1);
problem2buttonEl.addEventListener("click", problem2);
problem3buttonEl.addEventListener("click", problem3);
problem4buttonEl.addEventListener("click", problem4);

现在我想制作一个for循环来使它变得更干净,如下所示:

for (var problemIncrement = 1; problemIncrement <= 30; problemIncrement++) {
'problem' + problemIncrement + 'buttonEl'.addEventListener("click", 
'problem' + problemIncrement);
}

问题是我需要在我的变量中添加一个字符串,并且它们的结果也是一个变量,因为这就是问题XbuttonEl。

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

为什么不使用带参数的闭包作为按钮的标识符编号,如

function problem(n) {
    return function () {
        // do something with n
    }
}

for (var i = 1; i <= 30; i++) {
    getElementById('problem' + i + 'buttonEl').addEventListener("click", problem(i));
}

答案 1 :(得分:1)

您可以使用括号表示法[]来获取这些变量,通常它们应该在window对象中定义,这就是您的代码应该如何:

for (var problemIncrement = 1; problemIncrement <= 30; problemIncrement++) {
    window['problem' + problemIncrement + 'buttonEl'].addEventListener("click", 
    window['problem' + problemIncrement]);
}

此处window['problem' + problemIncrement + 'buttonEl']将引用您已定义的varibale。

答案 2 :(得分:0)

var resultsArray = [1, 2, 3];
var resultsString = myArray.join();
problem1buttonEl.addEventListener("click", function() {
  resultsArray.push(problem1)
});

document.write(resultsString);

或类似的东西!