【问题标题】:How to fix a not defined javascript error?如何修复未定义的 javascript 错误?
【发布时间】:2012-05-15 17:41:22
【问题描述】:

我对 Javascript 还很陌生,我想要做的是在单击链接后立即设置 cookie。当我从链接返回上一页时,我希望页面自动刷新并通过颜色通知用户以显示他们刚刚单击的链接。我用这个例子来指导我http://webdesign.about.com/od/cookies/a/aa083198.htm。但我还是没听懂。

下面的代码是我所拥有的。问题是,只要我点击链接,萤火虫就会出现错误“getLink not defined”。同样通过 Firefox 上的 Web 开发人员,即使我从 Html 调用它,我的 cookie 似乎实际上并没有被设置。我还展示了我的 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

【问题讨论】:

  • 错误信息指向哪一行?你没有在你发布的代码中的任何地方调用getLink()
  • 我在 setCookie 中的 videoId 是一个 php 变量,它在我的代码中的其他地方定义。 - 您是否也在 JavaScript 中设置了该变量? JavaScript 不会自动识别 PHP 变量。
  • 你在哪里调用了getLink函数?
  • 坦率地说,我认为在回到 cookie 之前,您应该先了解 JavaScript 基础知识。您当前的代码似乎有很多问题,调试整个事情需要付出很多努力。
  • 问题是您似乎不了解javascript和php之间交互的基础知识,并且您正在尝试一些对于初学者来说有点复杂的东西。你应该阅读一些文档或教程,然后回到这段代码。

标签: php javascript cookies setcookie


【解决方案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(除非你自己创建了它)否则你会永远循环

【讨论】:

  • 我的研究使我找到了 window.refresh 。猜猜你不能相信你在互联网上看到的一切。感谢您的回复。
【解决方案2】:
  1. 在代码中,我看不到 videoId 的赋值位置
  2. 你没有调用函数setCookie(cookie_name,cookie_value);来设置cookie。

请阅读关于 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>

【讨论】:

  • 啊啊啊我看到了,谢谢你的通知,我改变一下看看会发生什么。
  • 感谢您的帮助,我会尽力解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 2019-08-31
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多