使用window.onload的Javascript Switch Case错误

时间:2016-10-08 13:03:23

标签: javascript switch-statement

我有一个带有window.onload功能的开关盒。

以下是代码:

window.onload = ButtonClicked();

function ButtonClicked() {
    document.getElementById("Easy").onclick = alertMessage();
    document.getElementById("Intermediate").onclick = alertMessage();
    document.getElementById("Advanced").onclick = alertMessage();
}
function alertMessage() {
    switch(this.id) {
        case "Easy":
            alert("Easy Content.")
        break;
        case "Intermediate":
            alert("Intermediate Content.")
        break;
        case "Advanced":
            alert("Advanced Content.")
        break;
    default:

    }
}

有谁知道为什么这不起作用?我已经尝试解决这个问题一段时间了,我仍然不知道如何解决它。是window.onload部分不起作用吗?或者它没有调用函数?或switch案例不起作用?

1 个答案:

答案 0 :(得分:0)

当您为DOM元素设置侦听器时,您不能使用括号(除了某些情况)。我的意思是 window.onload = ButtonClicked;不是window.onload = ButtonClicked();因为ButtonClicked是函数的名称(对它的引用),而ButtonClicked()调用(即执行)函数。可以为onclick监听器做同样的推理。

以下是工作代码:

window.onload = ButtonClicked;
function ButtonClicked() {
    document.getElementById("Easy").onclick = alertMessage;
    document.getElementById("Intermediate").onclick = alertMessage;
    document.getElementById("Advanced").onclick = alertMessage;
}

function alertMessage() {
    switch (this.id) {
    case "Easy":
        alert("Easy Content.");
        console.log("Easy Content");
        break;
    case "Intermediate":
        alert("Intermediate Content.");
        console.log("Intermediate Content");
        break;
    case "Advanced":
        alert("Advanced Content.");
        console.log("Advaced Content");
        break;
    default:
    }
}