1

ここにフィドルがありますが、「onmouseout」イベントで関数が呼び出されない理由がわかりません。 http://jsfiddle.net/foreyez/Xf6LW/

何か案は?

4

5 に答える 5

3

これは、onLoad オプションが選択されている場合、JavaScript パネルで作成する関数がグローバルではないためです。JavaScript は関数にラップされます。

それらをグローバルにしたい場合は、j08961が提案したことを行う必要があります。そのドロップダウンをラップなし(ボディまたはヘッド)が機能しないように変更します

最善の解決策は、HTML からイベント ハンドラーを設定しないことです。これはとにかく悪い習慣です。そうすると、グローバル関数に依存したり、HTML と JS を混在させたりすることはありません。

<div id="myDiv">
</div>​
document.getElementById('myDiv').onmousemove = function() {
  alert('here');
}

補足: myFunc が undefined であるか、またはそのようなものであるというコンソールのエラーに気付いたはずです。

于 2012-09-13T20:07:36.713 に答える
3

ドキュメントの head (または要素が DOM にある後の本体) に関数を配置するだけで十分です。

jsFiddle の例

于 2012-09-13T20:07:02.490 に答える
0

jsfiddle の原因だと思います。HTML の後にすべての JavaScript を宣言します。HTML が実行されて amyFuncを探しますが、見つかりません。次に、JS をロードしますが、実行すらしません。

于 2012-09-13T20:09:29.557 に答える
0

myFunc をグローバル関数として作成します。

firebug を使用してコードを検索し、次の生成コードを取得しました。

window.addEvent('load', function() {
    //window.myFunc makes myFunc as a global function
    // It can be accessed from any were inside current window.
   window.myFunc = function myFunc(x)
   {
        alert('yo');
   }
    // function below is not available gloably.
    function myFunct1(){
        alert('yo1');
    }
});

jsfiddleを参照してください

于 2012-09-13T20:09:48.427 に答える
0

ここで変更を確認できます: jsfiddle.

于 2012-09-13T20:11:36.477 に答える