Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReferenceError:使用onclick时未定义函数_Javascript_Jquery - Fatal编程技术网

Javascript ReferenceError:使用onclick时未定义函数

Javascript ReferenceError:使用onclick时未定义函数,javascript,jquery,Javascript,Jquery,我使用javascript设置了一个锚定标记,以便onclick,调用函数showSavingsEasterEgg,并传递一个值。我遇到的问题是,我没有正确引用我的函数: ReferenceError:showSavingsEasterEgg未定义 我尝试将showSavingsEasterEgg函数移动到showData函数中,以查看它是否解决了范围问题,但没有 有什么建议吗 define(["jquery", "go/util", "underscore", "jqueryui/slider

我使用javascript设置了一个锚定标记,以便
onclick
,调用函数
showSavingsEasterEgg
,并传递一个值。我遇到的问题是,我没有正确引用我的函数:

ReferenceError:showSavingsEasterEgg未定义

我尝试将
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);
  }

});
define([“jquery”、“go/util”、“下划线”、“jqueryui/slider”]、函数($、util、389;){
函数showData(数据){
$('项目')。追加('节省');
}
功能显示保存Seasteregg(数据){
控制台日志(“成功”);
控制台日志(数据);
}
});

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');
  }
});
window.showSavingsEasterEgg=函数(数据){
控制台日志(“成功”);
控制台日志(数据);
};
定义([“jquery”、“go/util”、“下划线”、“jqueryui/slider”]、函数($、util、3;){
函数showData(数据){
$('项目')。追加('节省');
}
});

您应该知道并理解任何编程语言中
范围的定义。请将名为“showSavingsEasterEgg”的函数移出父函数的一侧,它将像一个符咒一样工作。这是因为您将其定义为父函数的私有成员


干杯

让show saving Seasteregg全球化。您只能从html代码中调用全局可访问的对象/引用

 window.showSavingsEasterEgg = function(data){
    console.log("SUccess");
    console.log(data);
  }

想知道为什么到目前为止没有人提出最明显、方便和“最佳实践”的方法。您根本不应该使用内联事件处理,而是要低调地进行

$('#item').append($('<a>', {
    'class':    'savings_link',
    href:       '#',
    click:      function(e) {
        console.log("SUccess");
        console.log(data);
    }
}});
$('#项')。附加($(''){
“类”:“储蓄链接”,
href:“#”,
点击:功能(e){
控制台日志(“成功”);
控制台日志(数据);
}
}});

btw
ReferenceError:define没有定义
你知道这里的define()是什么吗?@eicto没有,但这不是问题:“showSavingsEasterEgg没有定义”。我想使用onClick,因为我有几个具有相同ID的锚定标记,如果我用事件侦听器单击其中一个,我的函数会被多次调用。