/**
* 為指定控制元件新增限制性事件, 該事件在觸發之後, 會被移除, 並在指定的時間間隔後, 重新繫結, 適用於避免控制元件事件被誤操作重複觸發的場景
* @param {String} domID 要新增事件的控制元件ID
* @param {String} eventName 要新增的事件, 例如: click, dblclick, 不可寫成onclick, ondblclick
* @param {Function} callback 觸發事件所要執行的函式, 對於有引數的函式, 需要包含在一個匿名函式中, 匿名函式中是對目標函式的呼叫, 對於無引數函式, 直接傳目標函式名稱即可
* @param {Number} interval 事件的時間間隔, Number型別或String型別的數字皆可
*/
function addLimitedEvent( domID, eventName, callback, interval ) {
var _dom = document.getElementById( domID );
if ( Number.isNaN( Number.parseInt( interval ) ) )
interval = 1;
else
interval = Number.parseInt( interval );
if ( _dom.addEventListener )
_dom.addEventListener( eventName, removeLimitedEvent );
else
_dom.attachEvent( `on` + eventName, removeLimitedEvent );
function removeLimitedEvent() {
callback();
if ( _dom.removeEventListener )
_dom.removeEventListener( eventName, removeLimitedEvent );
else
_dom.detachEvent( `on` + eventName, removeLimitedEvent );
setTimeout( function () {
addLimitedEvent( domID, eventName, callback );
}, interval * 1000 );
}
}
/*函式使用方法*/
addLimitedEvent(`btn_Test`,`click`,function(){handler(`a`,`b`)},1);
或
addLimitedEvent(`btn_Test`,`click`,handler,1);