Javascript 为什么我不能从2个函数内部调用该函数?
这是我的代码:Javascript 为什么我不能从2个函数内部调用该函数?,javascript,jquery,function,Javascript,Jquery,Function,这是我的代码: inserisciMarker(); function scorriAllaLista(param) { alert(param); } function inserisciMarker() { markerClick = function () { $('#example').attr("onclick", "scorriAllaLista('hello'); return false;"); }; markerClick(
inserisciMarker();
function scorriAllaLista(param) {
alert(param);
}
function inserisciMarker() {
markerClick = function () {
$('#example').attr("onclick", "scorriAllaLista('hello'); return false;");
};
markerClick();
}
单击链接,未捕获引用错误:未定义SCORRIALLALLISTA
为什么??如何修复它?这不是使用jQuery绑定事件处理程序的方式 替换
$('#example').attr("onclick", "scorriAllaLista('hello'); return false;");
与
如果确实必须按此方式执行,则可以将该方法添加到全局窗口对象,如下所示:
window.scorriAllaLista = function(param) {
alert(param);
}
-将方法添加到窗口
由于您已经在使用return false,您可能会使用a href=As return false;已经停止传播并防止默认行为。很可能它没有全局定义。window.scorriAllaLista=scorriAllaLista为什么要用javascript设置onclick属性而不是绑定事件?不应该使用attr添加事件处理程序@两者:我不能,因为这个未解决的问题:谷歌地图似乎删除了所有的处理程序。。所以我不能连接它!它不会删除处理程序,您只是错过了解释结果。事件根本不会冒泡,因为谷歌地图会在它们到达身体之前阻止它们。您在上一个问题中已经解释了这一点,请使用google maps api绑定事件。这就是为什么他们最终包含了该功能。正确答案,可能是最简单的解决方案/ninjad:在这种情况下,返回false是多余的。@AndreasGrech我不明白为什么。返回false告诉jQuery停止事件的传播并防止默认的单击行为。根据OP的意愿,它可能会有用。@AndreasGrech:OP在原始代码中使用了return false,因此针对OP的原始问题的注释可能会更好?@markzzz您的问题不清楚?您是否试图将代码注入来自另一个来源的iframe?+1,因为这解决了OP的实际问题,这与最初所说的有些不同。我使用动态函数测试了一个简单的变体,从而避免了参数。但是为什么我需要向dom中添加函数呢?函数应该在函数中可见。@markzzz:我不是100%确定,但它确实与从onclick属性中调用方法有关。我不知道内部函数,但您收到的错误消息表明执行预期scorriAllaLista在全局级别上可访问。正如“答案”所示,使用.click将在不将方法添加到窗口的情况下工作,但您无法按照您在评论中所述的方式进行操作。
window.scorriAllaLista = function(param) {
alert(param);
}