function GetCookie(name) 
//获得Cookie的原始值 

var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) 

var j = i + alen; 
if (document.cookie.substring(i, j) == arg) 
return GetCookieVal (j); 
i = document.cookie.indexOf(" ", i) + 1; 
if (i == 0) break; 

return null; 
}function doanswer(sid,biezhiyinan,SID2,cuoid)

 document.getElementById(sid).value=biezhiyinan;
 document.cookie= sid + "=" + escape(biezhiyinan);
 flag=document.getElementById('flag').value;
 var TT,YY;
 TT=SID2.toString();
 YY=biezhiyinan.toString();
 if (flag==0){ 
          document.getElementById('flag').value=1;
           var dadui_total= Number(GetCookie("dadui_total"));
   

alert("读取的旧的答对题数量:"+dadui_total);
           var da_total = Number(GetCookie("da_total"));

  alert("读取的旧的已答题数量:"+da_total);
           var new_total=Number(da_total-(-1));
   
          alert("写入的新的的已答题数量:"+new_total);
  // document.cookie= 'da_total'+ "=" + escape(new_total);
  SetCookie("da_total",new_total)
 if(TT==YY){
  daan.innerHTML= "<img src='images/Key_right.gif'>";
var new_dadui_total=Number(dadui_total-(-1));
alert('恭喜您答对了,哈哈');
alert('答对题目数量:'+new_dadui_total);
alert('已答题目数量:'+new_total);



 percent=Math.round(100*new_dadui_total/new_total*10)/10+"%";
            alert("正确率"+percent);

//document.cookie= "dadui_total"+ "=" + escape(new_dadui_total);
SetCookie("dadui_total",new_dadui_total);
//document.cookie= "percent"+ "=" + escape(percent);
    //alert(percent);
document.getElementById("percent").value=percent

 }
 else{
 daan.innerHTML= "<img src='images/Key_error.gif'>"+"答案是:"+TT; 
 var numbers = GetCookie('cuotiid');
 numbers = numbers+","+cuoid;
 document.cookie= 'cuotiid' + "=" + escape(numbers);

alert('汗答错了');
alert('答对题目数量:'+dadui_total);
alert('已答题目数量:'+new_total);
        percent=Math.round(100*dadui_total/new_total*10)/10+"%";

       document.getElementById('percent').value=percent }    }
 
else{
        //alert("第二次点击")  if(TT==YY){
  daan.innerHTML= "<img src='images/Key_right.gif'>";

 }
 else{
 daan.innerHTML= "<img src='images/Key_error.gif'>"+"答案是:"+TT; 
 var numbers = GetCookie('cuotiid');
 numbers = numbers+","+cuoid;
 document.cookie= 'cuotiid' + "=" + escape(numbers);
}} }// JavaScript Document调试的时候经常会发现读取的旧的已答题数量会出错,清空本地cookie之后,又回复正常
郁闷死了,高手帮忙看看

解决方案 »

  1.   

    是不是cookie的数量太多了?IE打了补丁后最大可保存的cookie是50个。
      

  2.   

    尝试用下面两个函数读写cookie:
    function setCookie(name, value) //cookies设置,第3个匿名参数表示cookie的保存时间
    {
    var argv = setCookie.arguments;
    var argc = setCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    if(expires!=null&&expires!="")
    {
    var LargeExpDate = new Date ();
    LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));
    }
    document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString()));
    }function getCookie(name) //cookies读取
    {
    var search = name + "="
    if(document.cookie.length > 0) 
    {
    offset = document.cookie.indexOf(search)
    if(offset != -1) 
    {
    offset += search.length
    end = document.cookie.indexOf(";", offset)
    if(end == -1) end = document.cookie.length
    return unescape(document.cookie.substring(offset, end))
     }
    else return ""
    }
    }
      

  3.   

    你的COOKIE没有设置失效时间,默认时间到了他就会消失了,你程序里设置下COOKIE失效时间看看
      

  4.   

    试过了,读取的旧的已答题数量和答对数量还会出错,值为undifinedfunction doanswer(sid,biezhiyinan,SID2,cuoid)

     document.getElementById(sid).value=biezhiyinan;
      setCookie("sid",biezhiyinan);
    //document.cookie= sid + "=" + escape(biezhiyinan);
     flag=document.getElementById('flag').value;
     var TT,YY;
     TT=SID2.toString();
     YY=biezhiyinan.toString();
     if (flag==0){ 
              document.getElementById('flag').value=1;
              var dadui_total= GetCookie("dadui_total");
               
            
            alert("读取的旧的答对题数量:"+dadui_total);
               var da_total = GetCookie("da_total");
            
              alert("读取的旧的已答题数量:"+da_total);
               var new_total=da_total-(-1);
               
              alert("写入的新的的已答题数量:"+new_total);    //document.cookie= 'da_total'+ "=" + escape(new_total);
      setCookie('da_total',new_total);
     if(TT==YY){
      daan.innerHTML= "<img src='images/Key_right.gif'>";
    new_dadui_total=dadui_total-(-1);
    alert('恭喜您答对了,哈哈');
    alert('答对题目数量:'+new_dadui_total);
    alert('已答题目数量:'+new_total);



     percent=Math.round(100*new_dadui_total/new_total*10)/10+"%";
                //alert(da_total);
     setCookie("dadui_total",new_dadui_total);
    //document.cookie= 'dadui_total'+ "=" + escape(new_dadui_total);

     setCookie("percent",percent);
    //document.cookie= 'percent'+ "=" + escape(percent);
        //alert(percent);
    document.getElementById('percent').value=percent

     }
     else{
     daan.innerHTML= "<img src='images/Key_error.gif'>"+"答案是:"+TT; 
     var numbers = GetCookie('cuotiid');
     numbers = numbers+","+cuoid;
     setCookie('cuotiid',numbers);          //document.cookie= 'cuotiid' + "=" + escape(numbers);

       alert('汗答错了');
    alert('答对题目数量:'+dadui_total);
    alert('已答题目数量:'+new_total);
            percent=Math.round(100*dadui_total/new_total*10)/10+"%";
          setCookie('percent',percent);
           document.getElementById('percent').value=percent }    }
     
    else{
            //alert("第二次点击")  if(TT==YY){
      daan.innerHTML= "<img src='images/Key_right.gif'>";

     }
     else{
     daan.innerHTML= "<img src='images/Key_error.gif'>"+"答案是:"+TT; 

    }} }// JavaScript Document
      

  5.   

    在程序开始运行的时候我把 dadui_total da_total都初始化为了
    <script language="JavaScript" type="text/javascript">
    setCookie("dadui_total",0);
    setCookie("da_total",0);
    setCookie("percent",0);
    </script>
      

  6.   

    读取的旧的已答题数量和答对数量还会出错,值为undifined 
    我清空本地COOKIE后,又运行正常了
      

  7.   

    Response.Cookies("dadui_total").expires = DateAdd("h", 1, Now())
    Response.Cookies("da_total").expires = DateAdd("h", 1, Now())
    COOKIE有效期设置过
      

  8.   

    演示地址:
    http://www.hzzqtz.com/ks/
    你第一次点顺序练习 运行 没有任何问题
    但是如果你再点随机联系,就会出错,读取的旧的已答题数量和答对数量会出错,值为undifined  
    但你清空COOKIE以后在运行就没有问题了
    倘若你在回到顺序联系,又会出同样的错误
    里面调用的都是用一个function doanswer
      

  9.   

    在程序开始运行的时候我把 dadui_total da_total都初始化为了 
    <script language="JavaScript" type="text/javascript"> 
    setCookie("dadui_total",0,30); //设置保存1个月再试试
    setCookie("da_total",0,30); 
    setCookie("percent",0,30); 
    </script> 
      

  10.   

    再其他地方也同样加一个cookie超期时间的值,就是第3个参数。
      

  11.   

    不行,问题还是那样
    演示地址: 
    http://www.hzzqtz.com/ks/ 
    你第一次点顺序练习 运行 没有任何问题 
    但是如果你再点随机联系,就会出错,读取的旧的已答题数量和答对数量会出错,值为undifined   
    但你清空COOKIE以后在运行就没有问题了 
    倘若你在回到顺序联系,又会出同样的错误 
    里面调用的都是用一个function doanswer