为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。
有没有办法做到这一点?
答案 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);
或类似的东西!