2015-11-13 13 views
0

我正在製作一個使用cookie獲取用戶名的網站。當我嘗試使用inner.html顯示它時,它甚至不會提示用戶。這是我的代碼。該地區是特定的功能checkCookie()如何從用戶輸入中獲取cookie並將其顯示在html元素上

<!DOCTYPE html> 
    <html> 
    <head> 
    <script> 

    function setCookie(cname,cvalue,exdays) { 
     var d = new Date(); 
     d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
     var expires = "expires=" + d.toGMTString(); 
     document.cookie = cname+"="+cvalue+"; "+expires; 
    } 

    function getCookie(cname) { 
     var name = cname + "="; 
     var ca = document.cookie.split(';'); 
     for(var i=0; i<ca.length; i++) { 
      var c = ca[i]; 
      while (c.charAt(0)==' ') c = c.substring(1); 
      if (c.indexOf(name) == 0) { 
       return c.substring(name.length, c.length); 
      } 
     } 
     return ""; 
    } 

    function checkCookie() { 
     var user=getCookie("username"); 
     if (user != null) { 
      document.getElementById("person").innerHTML = 
      "Hello " + user + "!"; 
     } else { 
      user = prompt("Please enter your name:",""); 
      if (user != "" && user != null) { 
       setCookie("username", user, 30); 
      } 
     } 
    } 

    </script> 
    </head> 
    <body onload="checkCookie()"> 
    <p id="person">anonymous user</p> 
    </body> 
    </html> 
+0

'getCookie'永遠不會返回'null'。如果沒有找到cookie,它將返回一個空字符串。 – Barmar

+0

基本調試:你檢查了你的JS控制檯是否有錯誤?代碼中的任何錯誤,整個腳本塊都會死亡。 –

回答

1

變化

return ""; 

到:

return null; 

checkCookie預計getCookie返回null時未找到該cookie。空字符串與null不同。

DEMO

+0

我這樣做了,但它沒有提示用戶,並且p標籤表示爲空 – NoobCoder

+0

它適用於我,請參閱我的jsfiddle演示 – Barmar

+0

請注意,您必須重新加載頁面以查看名稱,因爲您沒有提示後更新'innerHTML'。 – Barmar

相關問題