我有一些代码我从一个例子中复制过来,我不确定我是否理解它,并且它给了我一个错误,这个错误在我第一次使用时没有发生。
在此页面上:
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 );
};
答案 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中给你问题的行只是在那种情况下删除它