我對下拉列表中的onchange事件有疑問。 我一直在做一些閱讀,發現處理更改事件的首選方法是:在javascript中爲事件分配函數
select.onchange = function(){animateMarker()};
我只是想知道爲什麼它不能僅僅是:
select.onchange = animateMarker();
什麼animateMarker()之前的函數()在做什麼?
謝謝。
我對下拉列表中的onchange事件有疑問。 我一直在做一些閱讀,發現處理更改事件的首選方法是:在javascript中爲事件分配函數
select.onchange = function(){animateMarker()};
我只是想知道爲什麼它不能僅僅是:
select.onchange = animateMarker();
什麼animateMarker()之前的函數()在做什麼?
謝謝。
你可以這樣做:
select.onchange = animateMarker;
添加()
立即執行的功能,消除他們意味着你要指定的功能,事件處理程序,因此,這將是最終執行。
並回答最後一部分:包裝animateMarker的函數(){}是不必要的,它只是一個匿名函數,在調用函數時會執行該函數。
*「...,刪除它們意味着 - 」* - 您將該功能分配給事件處理程序,以便最終執行該功能。這可能是一個更好的方式來做到這一點。 – deceze
謝謝@deceze我已更新您的建議。 – MrWillihog
正如@mrwillihog說,你可以直接用它的定義賦予它像select.onchange = animateMarker;
但明智的做法是使用包裝的功能,因爲這樣做,你可以將其插入包裝函數後來到onchange
事件添加更多的功能建議。否則,您將僅限於animateMarker
事件...或者...您可能需要重新定義animateMarker並執行一些醜陋的猴子補丁。所以最好使用包裝函數。
1)如果你想添加更多的事件監聽器,那麼你可以添加一個函數包裝器。 2)無論如何,您應該使用'addEventListener',而不是直接覆蓋事件處理程序屬性的原因。 – deceze
[將onclick事件分配給函數]可能重複(http://stackoverflow.com/questions/3740761/assign-onclick-event-to-function) – Rajesh