我对下拉列表的onchange事件有疑问。 我一直在做一些阅读,发现处理变更事件的首选方法是:
select.onchange = function(){animateMarker()};
我只是想知道为什么它不能只是:
select.onchange = animateMarker();
animateMarker()之前的函数()是做什么的?
感谢。
答案 0 :(得分:3)
你可以这样做:
select.onchange = animateMarker;
添加()
会立即执行该功能,删除它们意味着您将该功能分配给事件处理程序,以便最终执行该功能。
回答最后一部分:包含animateMarker的函数(){}是不必要的,它只是一个匿名函数,在调用它时执行animateMarker
函数。
答案 1 :(得分:0)
正如@mrwillihog所说,您可以直接使用它的定义select.onchange = animateMarker;
来指定它,但是建议使用包装函数是明智的,因为这样做可以稍后添加更多函数插入包装函数中的onchange
事件。否则你只会被animateMarker
事件限制......或者......你可能需要重新定义animateMarker并做一些丑陋的猴子补丁。因此,最好使用包装函数。