以下代码有问题。当用户单击按钮时,我想相应地设置clickedAnswer的值。然后,我可以稍后针对答案验证点击的按钮。目前,我每次都记录4。任何帮助将不胜感激!
let clickedAnswer = 1;
function setClickedAnswer(button) {
if (button.id === "option1") {
clickedAnswer = 1;
} else if (button.id === "option2") {
clickedAnswer = 2;
} else if (button.id === "option3") {
clickedAnswer = 3;
} else {
clickedAnswer = 4;
}
validateAnswer();
console.log(clickedAnswer);
}
answer1.addEventListener("click", setClickedAnswer);
answer2.addEventListener("click", setClickedAnswer);
answer3.addEventListener("click", setClickedAnswer);
answer4.addEventListener("click", setClickedAnswer);
答案 0 :(得分:1)
该函数期望按钮本身被传递:
function setClickedAnswer(button) {
但是,没有通过这样的按钮:
answer1.addEventListener("click", setClickedAnswer);
在默认情况下发送到事件处理程序的是the event object itself,它具有一个target
属性,用于引用调用事件的元素。因此,您可以这样做:
if (button.target.id === "option1") {
(当然也可以重复其他条件)
或者,如果您希望函数期望按钮元素,则可以将函数包装在事件处理程序调用周围,并将元素传递到那里:
answer1.addEventListener("click", () => setClickedAnswer(answer1));
或:
answer1.addEventListener("click", function () { setClickedAnswer(answer1); });