如果以这种方式编写事件,则应在下列情况下执行操作:
document.getElementById('myElem').onmousedown = (e) => {
console.log('fired!')
}但是,如果我用另一种方式编写相同的内容,则在加载页面时执行操作一次:
let HandleEvent = (event) => {
console.log('fired!')
}
document.getElementById('myElem').onmousedown = HandleEvent(event)UPD:当然只是一个例子,HandleEvent函数将有更复杂的逻辑。
我的问题是:
发布于 2016-07-07 11:15:45
document.getElementById('myElem').onmousedown = HandleEvent;会做您想做的事情;在分配处理程序时不应该执行它。您应该只分配函数引用。
然后,您也可以将它指定为onload处理程序,甚至可以自己调用它(如果您不依赖于事件对象)
发布于 2016-07-07 11:13:33
document.getElementById('myElem').onmousedown = HandleEvent;要传递其他参数,可以使用bind:
document.getElementById('myElem').onmousedown = HandleEvent.bind(null, argument1, argument2);...or您可以使用工厂函数:
document.getElementById('myElem').onmousedown = createHandler();
function createHandler() {
var a = calculateA();
var b = calculateA();
return function handleEvent() {
//use a and/or b
};
}还有其他的方法。精确的代码将取决于您的用例。
发布于 2016-07-07 11:15:57
你不需要event。
let HandleEvent = (event) => 'fired!';
document.getElementById('myElem').onmousedown = HandleEventhttps://stackoverflow.com/questions/38243984
复制相似问题