3

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);
  }

});
4

4 に答える 4

8

の定義を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');
  }
});
于 2012-11-10T18:54:09.583 に答える
2

これまで、最も明白で便利な「ベストプラクティス」の方法を誰も提案しなかったのはなぜだろうか。インライン イベント処理はまったく使用しないでください。目立たないようにしてください。

$('#item').append($('<a>', {
    'class':    'savings_link',
    href:       '#',
    click:      function(e) {
        console.log("SUccess");
        console.log(data);
    }
}});
于 2012-11-10T19:00:50.317 に答える
1

showSavingsEasterEgg をグローバルにします。HTMLコードからグローバルにアクセス可能なオブジェクト/参照のみを呼び出すことができます。

 window.showSavingsEasterEgg = function(data){
    console.log("SUccess");
    console.log(data);
  }
于 2012-11-10T18:55:36.690 に答える
0

"scope"プログラミング言語の の定義を知り、理解する必要があります。親関数の外側に名前を付けた関数を移動してください"showSavingsEasterEgg"。魅力的に機能します。これは、親関数のプライベート メンバーとして定義したためです。

乾杯

于 2012-11-10T18:55:24.880 に答える