繁体   English   中英

ReferenceError:使用onclick时未定义函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM