2011-03-11 120 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,或使用開關。