我有一个带有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
案例不起作用?
答案 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:
}
}