[英]ReferenceError: function is not defined when using onclick
我使用javascript设置了一个锚标签,以便onclick
,我调用一个函数showSavingsEasterEgg
并传递一个值。 我得到的问题是我没有正确引用我的功能:
ReferenceError: showSavingsEasterEgg is not defined
我已经尝试将showSavingsEasterEgg
函数移动到showData
函数中以查看它是否解决了作用域问题,但事实并非如此。
有小费吗
define(["jquery", "go/util", "underscore", "jqueryui/slider"], function ($, util,_) {
function showData(data) {
$('#item').append('<a class="savings_link" href="#" onclick=\'showSavingsEasterEgg('+data[key]['saving']+')\'> Savings');
}
function showSavingsEasterEgg(data){
console.log("SUccess");
console.log(data);
}
});
将showSavingsEasterEgg
的定义直接放在全局范围中。
在这里,它无法找到。
你可以这样做 :
window.showSavingsEasterEgg = function (data){
console.log("SUccess");
console.log(data);
};
define(["jquery", "go/util", "underscore", "jqueryui/slider"], function ($, util,_) {
function showData(data) {
$('#item').append('<a class="savings_link" href="#" onclick=\'showSavingsEasterEgg('+data[key]['saving']+')\'> Savings');
}
});
想知道为什么没有人提出迄今为止最明显,最方便和“最佳实践”的方法。 你根本不应该使用内联事件处理 ,不要引人注目。
$('#item').append($('<a>', {
'class': 'savings_link',
href: '#',
click: function(e) {
console.log("SUccess");
console.log(data);
}
}});
使showSavingsEasterEgg全局化。 您只能从html代码中调用全局可访问的对象/引用。
window.showSavingsEasterEgg = function(data){
console.log("SUccess");
console.log(data);
}
您应该了解并理解任何编程语言中"scope"
的定义。 请将名为"showSavingsEasterEgg"
的函数移出父函数的一侧,它将像魅力一样工作。 这是因为您将其定义为父函数的私有成员。
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.