小弟初学JS,写了一个cookie的例子,功能是用户首次进入页面,要求用户输入姓名,页面保存用户的名字作为cookie,下次用户进入同一个页面,系统自动弹出欢迎窗口。但运行时直接出现欢迎,然后一堆不知道什么的东东,请大虾帮忙debug一下function getcookie(c_name)这段。<body onload="checkcookie()">
<script type="text/javascript">function setcookie(c_name,value,expiredays)
{var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
if(expiredays==null)
{expiredays="";}
else {expiredays=";expires="+exdate.toGMTString();}
document.cookie=c_name+"="+escape(value)+expiredays;
}
function getcookie(c_name)
{try{
    if(document.cookie.length>1)
    {
     if(document.cookie.indexOf(c_name+"=")!=-1)
     {c_start=document.cookie.indexOf(c_name+"=")
      if(document.cookie.indexOf(";",c_start)!=-1)
      {c_end=document.cookie.indexOf(";",c_start)}
      else{c_end=document.cookie.length}
                        
     }
     else {c_start=-1;c_end=document.cookie.length;}
     return unescape(document.cookie.substring(c_start,c_end));
    }
    else return "";
}
catch(err)
{alert(err.description)}
}function checkcookie()
{username=getcookie('username');
if(username!=null&&username!="")
{alert('Welcome again,'+username+'!')}
else
{username=prompt('Please enter your name:',"");
setcookie('username',username,30)
}
}</script> 
</body>

解决方案 »

  1.   

    <body onload="checkcookie()"> 
    <script type="text/javascript"> 
    function setcookie(c_name,value,expiredays) 
    {var exdate=new Date(); 
    exdate.setDate(exdate.getDate()+expiredays); 
    if(expiredays==null) 
    {expiredays="";} 
    else {expiredays=";expires="+exdate.toGMTString();} 
    document.cookie=c_name+"="+escape(value)+expiredays; 

    function getcookie(c_name) 
    {try{ 
        if(document.cookie.length>1) 
        { 
        if(document.cookie.indexOf(c_name+"=")!=-1) 
        {c_start=document.cookie.indexOf(c_name+"=")+c_name.length+1; 
          if(document.cookie.indexOf(";",c_start)!=-1) 
          {c_end=document.cookie.indexOf(";",c_start)} 
          else{c_end=document.cookie.length} 
                            
        } 
        else {c_start=-1;c_end=document.cookie.length;} 
        return unescape(document.cookie.substring(c_start,c_end)); 
        } 
        else return ""; 

    catch(err) 
    {alert(err.description)} 
    } function checkcookie() 
    {username=getcookie('username'); 
    if(username!=null&&username!="") 
    {alert('Welcome again,'+username+'!')} 
    else 
    {username=prompt('Please enter your name:',""); 
    setcookie('username',username,30) 

    } </script> 
    </body>
    就是拿的时候c_start拿得不对.其他没问题.
    出现那些怪东西原因是你那测试页面原来就有cookie存在.
    你在script的最前面加句document.cookie="username=abc"
    就不会了.
      

  2.   


    <body onload="checkcookie()"> 
    <script type="text/javascript"> 
    function setcookie(c_name,value,expiredays){
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate()+expiredays); 
    if(expiredays==null){expiredays="";} 
    else {expiredays=";expires="+exdate.toGMTString();} 
    document.cookie=c_name+"="+escape(value)+expiredays; 
    }function getcookie(c_name){
    try{ 
        if(document.cookie.length>1 && document.cookie.indexOf(c_name+"=")!=-1){
    c_start=document.cookie.indexOf(c_name+"=")+c_name.length+1 ;
    if(document.cookie.indexOf(";",c_start)!=-1) {c_end=document.cookie.indexOf(";",c_start)} 
    else{c_end=document.cookie.length} 
    return unescape(document.cookie.substring(c_start,c_end)); 
        } 
        else return ""; 

    catch(err){alert(err.description)} 
    } function checkcookie(){
    username=getcookie('username');
    if(username!="null" && username!=""){alert('Welcome again,'+username+'!')} 
    else {
    username=prompt('Please enter your name:',"");
    if (username && username.length>0) setcookie('username',username,30)//避免“取消”输入或“空”输入

    } </script> 
    </body>
      

  3.   


    <body onload="checkcookie()"> 
    <script type="text/javascript"> 
    function setcookie(c_name,value,expiredays){
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate()+expiredays); 
    if(expiredays==null){expiredays="";} 
    else {expiredays=";expires="+exdate.toGMTString();} 
    document.cookie=c_name+"="+escape(value)+expiredays; 
    }function getcookie(c_name){
        if(document.cookie && document.cookie.length>1 && document.cookie.indexOf(c_name+"=")!=-1){
    c_start=document.cookie.indexOf(c_name+"=")+c_name.length+1 ;
    if(document.cookie.indexOf(";",c_start)!=-1) {c_end=document.cookie.indexOf(";",c_start)} 
    else{c_end=document.cookie.length} 
    return unescape(document.cookie.substring(c_start,c_end)); 
        } 
        else return ""; 
    } function checkcookie(){
    username=getcookie('username');
    if(username!="null" && username!=""){alert('Welcome again,'+username+'!')} 
    else {
    username=prompt('Please enter your name:',"");
    if (username && username.length>0) setcookie('username',username,30)//避免“取消”输入或“空”输入

    } </script> 
    </body>