2016-08-24 29 views
1

下面的代碼jQuery:如果條件爲false,但仍然執行?

$(document).ready(function(){ 

    sessionStorage.test = false; 

    alert(sessionStorage.test); 

    if (sessionStorage.test) { 
     alert("I dont care about your conditions!"); 
    } 

    }); 

產生以下彈出窗口:

我不關心你的條件!

即使sessionStorage.test顯然設置爲false。爲什麼會這樣?根據這個回答https://stackoverflow.com/a/17986241/2311074,這應該工作。我究竟做錯了什麼?我正在使用XAMPP - 會話sessionStorage可能存在問題嗎?下面是我的測試文件的完整代碼:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>Test</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script > 
     $(document).ready(function(){ 
     sessionStorage.test = false;  
     if (sessionStorage.test) { 
      alert("I dont care about your conditions!"); 
     } 
     }); 
    </script> 
    </head> 
    <body> 
    <!-- page content --> 
    </body> 
</html> 
+0

「它返回」是什麼意思?帶有'alert()'函數調用的Javascript代碼不會「返回」任何東西。 – arkascha

+0

嗯,我會看在控制檯上,看看有可能是一個錯誤,sessionStorage也是瀏覽器本地存儲的東西。我不確定你可以只設置一個額外的變量 –

+0

@arkascha你的權利,壞的措辭。我改變它。我的意思是我得到2個彈出窗口。 – Adam

回答

2

爲sessionsStorage的默認方法是:

sessionStorage.setItem('keyName', "value");  
sessionStorage.getItem('keyName') 

但是請注意,它不會幫助。 sessionStorage返回一個值,而不是條件布爾值。它的作用一樣,如果你設置:

sessionStorage.setItem('test',"false"); 

所以,你實際的解決方案將是:

sessionStorage.setItem('test',false);  
if (sessionStorage.getItem('test') != "false") { 
    .......... 
} 

重複的主題:
- sessionStorage setItem returns true or false
- sessionStorage isn't working as expected

+0

好的。所以我必須做一些像'if(sessionStorage.getItem('test')==「false」)'?謝謝!定時器過期後,我立即接受答案。 – Adam

+0

我已經更新了答案,是的,你應該......「=」false「 –

相關問題