2

所以我一直在阅读 Head First JavaScript,然后我来到了关于使用函数文字进行事件处理的部分。这本书解释说,您可以在“脚本”标签中连接所有事件处理。但我对如何让多个函数在一个事件上触发感到困惑。这是我的代码:

//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 回答