如何修复未定义的javascript错误?

时间:2012-05-15 09:27:26

标签: php javascript cookies setcookie

我对Javascript还不熟悉,我想要做的就是在点击链接时设置一个cookie。当我从链接返回上一页时,我希望页面自动刷新并通过颜色通知用户以显示他们刚刚点击的链接。我用这个例子来指导我http://webdesign.about.com/od/cookies/a/aa083198.htm。但我仍然没有得到它。

以下代码就是我所拥有的。问题是,只要我点击链接,firebug就会出现错误“getLink not defined”。此外,通过Firefox上的Web开发人员,似乎我的cookie实际上并没有被设置,即使我从Html中调用它。我也显示了我调用函数的Html中最重要的部分。

我在setCookie中的videoId是一个php变量,在我的代码中的其他地方定义。如果有人能指出我正确的方向,我真的很感激。谢谢!

   <head>
    <script language="text/javascript">
    var cookie_name = "watched";
        function setCookie(cookie_name,cookie_value)
        {

        if (document.cookie!="") {
           index = document.cookie.indexOf(cookie_name);
           } else {
            index = -1;
            }
            if (index == -1) {
              var finish = 7200;
              var cookie_value = videoId + "; expires=" + finish;
              document.cookie=cookie_name  + "=" + cookie_value;
              }         
            }

     function getLink(cookie_value) {     
       if (document.cookie) {
         index = document.cookie.indexOf(cookie_value);
             if (index != -1) {
             colorLinks;
              }
            else{
            //alert("No color");
             }

              }
            return colorLinks;
           }

     function colorLinks()
      {
        $('#' + videoId).css('background-color: pink'); 

      }
  </script>
  </head>
<body onLoad=window.refresh>
<div id="page">
echo '<a href="' . $link . '" onclick="setCookie(); return true;">' . $this->Links

2 个答案:

答案 0 :(得分:1)

这没有意义:

function getLink(cookie_value) {  
  if (document.cookie) {
    index = document.cookie.indexOf(cookie_value);
    if (index != -1) {
      colorLinks; // you mean colorLinks(); ???
    }
    else {
      //alert("No color");
    }
  }
 // why return a function that sets color instead of just calling it?
  return colorLinks;
}

并且幸运的是没有任何名为window.refresh(除非您自己创建了它)或者您将永远循环

答案 1 :(得分:0)

  1. 在代码中,我看不到videoId在哪里被赋予值
  2. 您不会调用函数setCookie(cookie_name,cookie_value);来设置Cookie。
  3. 请阅读有关Cookie的信息:http://www.quirksmode.org/js/cookies.html

    <script type = "text/javascript">
    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    
    function readCookie(name) {
        var nameEQ = name + "=";
        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,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
    function eraseCookie(name) {
        createCookie(name,"",-1);
    }
    </script>