【问题标题】:How can i join a string and a variable to create a new variable in javascript?如何加入字符串和变量以在 javascript 中创建新变量?
【发布时间】:2023-03-12 00:04:01
【问题描述】:

找到了几个 php 的解决方案,但找不到任何适用于 javascript 的解决方案。

基本上,我正在尝试为页面上的 30 个按钮创建一堆事件监听器。目前是这样写的:

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);
}

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

有什么办法吗?

【问题讨论】:

标签: javascript string variables for-loop addeventlistener


【解决方案1】:

您可以使用括号符号[] 来获取这些变量,通常它们应该在window 对象中定义,因此您的代码应该是这样的:

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

这里window['problem' + problemIncrement + 'buttonEl'] 将引用您已经定义的变量。

【讨论】:

  • 你先生刚刚删掉了143行代码,非常感谢!
【解决方案2】:

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

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

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

【讨论】:

  • 啊,这也是 getElemtById 部分的智能集成,谢谢!
【解决方案3】:
var resultsArray = [1, 2, 3];
var resultsString = myArray.join();
problem1buttonEl.addEventListener("click", function() {
  resultsArray.push(problem1)
});

document.write(resultsString);

或类似的东西!

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2022-06-25
    • 1970-01-01
    相关资源
    最近更新 更多