如何用onclick为一组按钮分配一个功能;

问题描述 投票:0回答:1

我只是想将相同的功能分配给一堆按钮。我在引用按钮时遇到了问题,我遇到了“querySelectorAll 不是函数”,对于 getElementByClass 也是如此,但在当前代码中,它引用了某些内容,因为该函数有效,但仅在加载时有效,而在单击时无效。

这是代码:

let key;
let text;
let keys;

let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
for(let i = 0; i < alphabet.length; i++){
key = alphabet[i] + "Key";
text = document.createTextNode(alphabet[i].toUpperCase());
key = document.createElement("button");
key.appendChild(text);
key.classList.add("keys");
keyboard.append(key);
    }
keys = document.querySelectorAll(".keys");
keys.onClick = isLetterThere();

}

function isLetterThere(){
console.log("fghjk")
}

javascript function
1个回答
0
投票

在您的代码中

keys = document.querySelectorAll(".keys");
这将返回一个集合。所以你需要迭代这个集合并向每个元素添加事件

您可以通过两种方式进行。您可以在创建按钮时添加

addEventListener

或者,您也可以使用

querySelectorAll
添加事件,这将返回
NodeList
然后循环集合并向其添加事件

let key;
let text;
let keys;
let keyboard = document.getElementById('keyboard')
let alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];

function isLetterThere() {
  console.log("fghjk")
}

function testAlternative() {
  console.log("testAlternative")
}

for (let i = 0; i < alphabet.length; i++) {
  key = alphabet[i] + "Key";
  text = document.createTextNode(alphabet[i].toUpperCase());
  key = document.createElement("button");
  key.appendChild(text);
  key.classList.add("keys");
  key.addEventListener('click', isLetterThere);
  keyboard.append(key);
}
document.querySelectorAll('.keys').forEach(elem => elem.addEventListener('click', testAlternative));
<div id='keyboard'></div>

© www.soinside.com 2019 - 2024. All rights reserved.