2011-03-11 122 views
1

几天前,我写了一个脚本,根据一天中的时间切换我的页面的CSS样式表。它似乎工作得很好,直到我意识到在经过剧本一次之后,它就会停止。Javascript如果语句在html页面上不能正常工作

例如。当我第一次实施这个剧本时,它将使用一天的风格表,然后在晚上使用不同的风格表,然后在日落时使用第三种风格表,最后在晚上使用一次。它会在第一时间做到这一点。但是在第四次切换之后,除非我重新实现脚本,否则它不会再次切换。它只停留在切换到脚本底部的样式表上因为我是JavaScript新手,我不知道为什么它会这样做。

我已经使用这个相同的JavaScript函数来控制图片和其他东西,他们似乎工作完美无瑕。这是代码。

<!--CSS Stylesheet Switch Code---> 

<script type="text/JavaScript"> 
<!-- 
function getStylesheet() { 
     var currentTime = new Date().getHours(); 
     if (7 <= currentTime && currentTime < 17) { 
     document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/vice.css' type='text/css'>"); 
     } 
     if (17 <= currentTime && currentTime < 19) { 
     document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/evening.css' type='text/css'>"); 
     } 
     if (19 <= currentTime && currentTime < 21) { 
     document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/dusk.css' type='text/css'>"); 
     } 
     else { 
     document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/nighttime.css' type='text/css'>"); 
     } 
} 

getStylesheet(); 
--> 
</script> 
+3

你是什么意思“后** **它通过脚本去了一次”是什么意思?您是否在谈论每隔几分钟刷新页面的单一登录用户?或者它仅在部署后的第一天才起作用?目前我无法想象在什么情况下这会失败,因为每次加载页面时,都应该对脚本进行完全不同于以前的尝试。有关您的测试的更多信息将会有所帮助。 – 2011-03-11 17:26:09

+0

“除非我重新实现脚本” - 你是指“重新实现”?你怎么做才能让它再次运作? – 2011-03-11 17:28:21

+0

尝试清除缓存并更新页面。可能是缓存有问题 – Anton 2011-03-11 17:28:38

回答

4

你应该使用JavaScript的if..else If..If声明如下图所示: -

if (7 <= currentTime&&currentTime < 17) { 
    document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/vice.css' type='text/css'>"); 
    } 
    else if (17 <= currentTime&&currentTime < 19) { 
    document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/evening.css' type='text/css'>"); 
    } 
    else if (19 <= currentTime&&currentTime < 21) { 
    document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/dusk.css' type='text/css'>"); 
    } 
    else { 
    document.write("<link rel='stylesheet' href='http://itsnotch.com/tumblr/files/nighttime.css' type='text/css'>"); 
    } 
6

即使前两个语句中的一个是正确的,最后两个语句中的一个仍然会执行。将您的ifs更改为ifs,或使用开关。