2

というわけで、Head First JavaScript を調べて、関数リテラルを使用したイベント処理に関するセクションにたどり着きました。この本では、「スクリプト」タグですべてのイベント処理を配線できると説明しています。しかし、1 つのイベントで複数の関数を起動する方法について混乱しています。これが私のコードです:

//Event Handling with Function Literals
  window.onload = function(evt) {

//THIS IS BROKEN
    document.body.onresize = resizeImg();reportImgHeight();

//Onload: Functions to Execute -- THESE WORK    
    resizeImg();
    reportImgHeight();
  }

したがって、特にこの例では、「onresize」イベントを取得してresizeImgreportImgHeight (コードの他の場所で定義した関数) の両方を実行するにはどうすればよいですか。ありがとうございました!

4

2 に答える 2

3

最もクリーンな解決策は、addEventListenerを使用することです。

window.addEventListener('resize', resizeImg);
window.addEventListener('resize', reportImgHeight);

このようにして、両方のバインディングを切り離すことができます。

resizeまた、ドキュメント パーツではなく、ウィンドウにイベントをバインドする必要があることにも注意してください。

于 2013-08-25T13:50:33.060 に答える
2

あなたはこれをしなければならないでしょう

document.body.onresize = function(){
    resizeImg();
    reportImgHeight();
};

そして、それらが別々の場合のようにそれらを呼び出したい場合は、次のようにすることができます

document.body.onresize = function(){
    resizeImg.apply(this, arguments);
    reportImgHeight.apply(this, arguments);
};

これはthis、イベントに渡されたすべての引数を通過します。

于 2013-08-25T13:49:56.960 に答える