2013-12-21 100 views
-1

我試圖製作一個簡單的程序,如果設置了cookie,並顯示歡迎消息,並且未設置cookie,它將顯示提示框,詢問用戶名。如果設置了cookie,則顯示歡迎消息

它不起作用,我不明白爲什麼。任何人都可以告訴我代碼中的問題在哪裏?

下面是代碼:

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

function setCookie(c_name,value,expiredays){ 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate()+expiredays); 
    if(expiredays==null) 
     document.cookie = c_name + "=" + escape(value) +""; 
    else 
     document.cookie = c_name + "=" + escape(value) + ";expires=" 
     +exdate.toGMTString()); 
} 

function getCookie(c_name){ 
    if(document.cookie.length>0) 
    { 

     c_start=document.cookie.indexOf(c_name + "="); 
     if(c_start!=-1) 
      c_start=c_start + c_name.length +1; 
      //index of the value's end 
      c_end=document.cookie.indexOf(";",c_start); 
      if(c_end==-1)//if it's the last cookie 
       c_end = document.cookie.length; 
      return unescape (document.cookie.substring(c_start,c_end)); 
     } 
    } 
    return ""; 
} 

function checkCookie(){ 
    username=getCookie('username'); 
    if(username!=null && username!="") 
     alert('welcome again ' + username+ '!'); 
    else { 
     username=prompt('please enter your name:',""); 
     if(username!=null && username!="") 
      setCookie('username',username,365); 
     } 
} 
</script> 
</head> 
<body onload="checkCookie()"> 
</body> 
</html> 

http://jsbin.com/AcanusA/12/edit

+0

你檢出了jsbin-tab「console」嗎? 「意外的令牌)」,「checkCookie沒有定義」 –

+0

你爲什麼說checkCookies沒有定義? – Ohad

+0

@Shiran控制檯說! – Cilan

回答

3

還有就是在你的代碼的兩個錯誤。一個未封閉的「)」(在setCookie()函數中,緊接在最後一個toGMTString();之後)和一個未封閉的「}」(在getCookie()函數中,緊接在if(c_start!=-1){之後)。

只要看看你的JavaScript控制檯來檢查這個錯誤。這裏的修正:

<html> 
<head> 
<script> 

function setCookie(c_name,value,expiredays){ 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate()+expiredays); 
    if(expiredays==null) 
     document.cookie = c_name + "=" + escape(value) +""; 
    else 
     document.cookie = c_name + "=" + escape(value) + ";expires=" 
     +exdate.toGMTString(); 
} 

function getCookie(c_name){ 
    if(document.cookie.length>0) 
    { 

     c_start=document.cookie.indexOf(c_name + "="); 
     if(c_start!=-1){ 
      c_start=c_start + c_name.length +1; 
      //index of the value's end 
      c_end=document.cookie.indexOf(";",c_start); 
      if(c_end==-1)//if it's the last cookie 
       c_end = document.cookie.length; 
      return unescape (document.cookie.substring(c_start,c_end)); 
     } 
    } 
    return ""; 
} 

function checkCookie(){ 
    username=getCookie('username'); 
    if(username!=null && username!="") 
     alert('welcome again ' + username+ '!'); 
    else { 
     username=prompt('please enter your name:',""); 
     if(username!=null && username!="") 
      setCookie('username',username,365); 
     } 
} 
</script> 
</head> 
    <body onload="checkCookie()"> 
    za 
</body> 
</html> 
+0

這是一個有趣的警報... – Neikos

+0

是的,我刪除了它hehe – megatxi

+0

這是一個小提琴:http://jsfiddle.net/UQTY2/230/ – sdespont

1

這裏是你的代碼的優化版本:

function getCookie(name) { 
    var setPos = document.cookie.indexOf(name + '='), stopPos = document.cookie.indexOf(';', setPos); 
    return !~setPos ? null : document.cookie.substring(
     setPos, ~stopPos ? stopPos : undefined).split('=')[1]; 
} 

function setCookie(name, val, days, path) { 
    var cookie = name + "=" + escape(val) + ""; 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
     cookie += ";expires=" + date.toGMTString(); 
    } 
    cookie += ";" + (path || "path=/"); 
    console.log(cookie); 
    document.cookie = cookie; 
} 

var username = getCookie("username"); 
if (!username) { 
    setCookie("username", prompt("please enter your name:"), 365); 
} else { 
    alert("welcome again " + username); 
} 

test case on jsFiddle

相關問題