JS中的变量未定义

时间:2011-06-10 15:51:37

标签: javascript

我有一些代码我从一个例子中复制过来,我不确定我是否理解它,并且它给了我一个错误,这个错误在我第一次使用时没有发生。

在此页面上:

http://www.comehike.com/hikes/uncancel_hike.php?hike_id=30

我收到错误:第84行没有定义x

我不太确定x应该在那里。任何帮助表示赞赏,特别是在帮助我理解这里发生的事情时:)

以下是代码:

function getCall(fn, param)
{
   return function(e)
   {
      e = e || window.event;
      e.preventDefault(); // this might let you use real URLs instead of void(0)
      fn(e, param);
   };
}

window.onload = function()
{
   var a = document.getElementById("mylink");
   a.onclick = getCall(deleteHike, x );
};

2 个答案:

答案 0 :(得分:2)

在您的代码中,x是一个参数,将被传递到函数deleteHike并且应该被定义,如果您不想要参数,则保留null,不知道是什么deleteHike在这里做。

当页面加载到元素myLink时,您的代码将连接事件。单击该元素时,即使来自浏览器的信息以及额外参数(x)也将传递到名为deleteHike的函数中。这解释了吗?

答案 1 :(得分:0)

您在onload方法中调用该函数并且它不知道x的值是什么,因为它未在Javascript中指定。我注意到你的网址中包含了加息id作为参数。试试这个:

window.onload = function()
{
   var a = document.getElementById("mylink");
   a.onclick = getCall(deleteHike, gup("hike_id")); //notice this changed
};

//Add this function in the js
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

另外我注意到A标签在dom上得到了正确的绑定我不确定你是否硬编码了那个或者什么,但是如果你的视图是在服务器上动态生成的,那么这一切都是无关紧要的,你不需要包括在你的js中给你问题的行只是在那种情况下删除它