我有一個對象的事件偵聽器,當對象發生變化時觸發一個函數。Javascript事件偵聽器在發射後會被破壞(默認情況下)嗎?
這是代碼:
window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1());
這完美的作品第一次的對象改變但是,所有連續的變化不會觸發事件偵聽器。
這是JavaScript的正常行爲?我能做些什麼來糾正這個問題?
我有一個對象的事件偵聽器,當對象發生變化時觸發一個函數。Javascript事件偵聽器在發射後會被破壞(默認情況下)嗎?
這是代碼:
window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1());
這完美的作品第一次的對象改變但是,所有連續的變化不會觸發事件偵聽器。
這是JavaScript的正常行爲?我能做些什麼來糾正這個問題?
不,每次事件偵聽器都應該被觸發。
我覺得這個錯誤是由於因爲你調用的函數,而不是把它當作一個參數:
getscriptbuttons1 // passes the function
getscriptbuttons1() // calls the function and passes whatever it returns
你是什麼意思? :
window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1);
不,它們不會被破壞。你必須手動刪除它們。問題在於你實際上正在調用事件監聽器中的函數。您需要將其更改爲:(不包含,不要稱之爲)
window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1);