多项选择测验遇到问题

时间:2020-07-13 13:57:18

标签: javascript

以下代码有问题。当用户单击按钮时,我想相应地设置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);

1 个答案:

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