“开关”中的功能不起作用

时间:2013-03-17 22:10:00

标签: javascript hash switch-statement

我有下面的javascript声明。我需要执行一些函数而不是alert(),但它不起作用......我需要包含 document.getElementById(“”)。innerHTML =“”函数。我对js不是很有经验,如果有人会解释如何做到这一点以及问题出在哪里,我将非常感激。

window.onload = function locationHashChanged() {
    var hashx = location.hash;
    switch (hashx) {
       case '#basketball':
           alert('1');
           break;
       case '#football':
           alert('2');
           break;
       default:
           alert('3');
    }
    window.onhashchange = locationHashChanged;
}

2 个答案:

答案 0 :(得分:1)

不要为window.onload的分配添加功能名称。

您需要指定anonymous function,例如

window.onload = function(){
  // stuff
}

答案 1 :(得分:1)

这里最可能出现的问题是,在发生加载事件后,您正在定义window.onload ,这意味着您的处理程序未被调用。要么,或者其他一些代码都会覆盖你的处理程序。

需要等到window的加载事件才能添加hashChange事件处理程序,所以只需使用:

window.onhashchange = function() {
    var hashx = location.hash;
    switch (hashx) {
       case '#basketball':
           alert('1');
           break;
       case '#football':
           alert('2');
           break;
       default:
           alert('3');
}