3

「onclick」イベントを使用してdocument.ready(function(){})で関数を呼び出すことはできますか?

      document.ready(function(){
      function MyFunction()
                {
                  alert("Hello");
                }
                });

<a href="#" onclick="javascript:MyFunction()"></a>
4

3 に答える 3

10

いいえ、onclick ハンドラーはeval()JavaScript 式を評価するために使用し、グローバル関数であるとeval()想定し、ハンドラーMyFunction()内で定義されている場合はグローバル関数ではないため、それを見つけることができないため、それを行うことはできません。.ready()eval()

次のように ready() ハンドラーで定義することにより、 MyFunction をグローバル関数にすることができます。

window.MyFunction = function() {...}

ただし、jQuery のイベント ハンドラーをそのまま使用し、HTML でイベント ハンドラーを指定しない方がよいでしょう。

<a id="myLink" href="#">Click Me</a>

$(document).ready(function() {
    $("#myLink").click(function() {
        alert("Hello");
    });
});
于 2012-04-10T06:20:01.843 に答える
1

「javascript:」は不要です。はい、できます。アクセス可能なスコープ (つまり、グローバル スコープ) で定義する限り。

function example() { console.log("Called!"); }

$(document).ready(function() { /* code */ example(); /* code */ });

<a href="#" onclick="example();">Example</a>
于 2012-04-10T06:20:29.790 に答える
0

コードをグローバル スコープから除外しようとしている場合は、次のようにすることができます。

var myApp = {

    myFunction: function() {
        alert("Hello");
    }

};


$(document).ready(function() {
    myApp.myFunction();
});

ただし、無名関数内で定義された関数はスコープ外でアクセスできないため、呼び出すことはできません。

つまり、関数が document.ready 内で定義されている場合、その関数を document.ready の外部から呼び出すことはできません。

于 2012-04-10T06:23:22.227 に答える