2014-10-06 84 views
0

我想重命名按鈕的onclick方法。首先我的按鈕有以下代碼:innerHTML.replace在Firefox中不工作但在IE中

<input id="my_button" class="update field-button" type="button" onclick="add(this)" value="ADD Something" title="ADD Item" name="my_button"></input> 

然後,我想是這樣的:

<input id="my_button" class="update field-button" type="button" onclick="remove(this)" value="ADD Something" title="ADD Item" name="my_button"></input> 

我做這個聲明的重命名:

parentNode.innerHTML = parentNode.innerHTML.replace(/(onclick="?)[A-Za-z0-9\-]+(\([^)]*\)"?)/, "$1remove$2"); 

parentNode是一個變種:

var parentNode = removeButton.parentNode; 

在Internet Explorer的它的工作原理,但不是在Firefox

+0

我會建議只運行一個函數,並有邏輯來決定它是否在該函數中添加或刪除,而不是嘗試更改像這樣的處理程序 – 2014-10-06 14:43:32

回答

0

雖然我會建議富人的答案,並把這種邏輯到clickHandler事件,這可能是有趣的問題是什麼。

由於點擊處理程序具有按鈕的作用域,Firefox會正確執行替換並調用按鈕原生remove-method。所以

onclick="remove(this)" 

相同

onclick="document.getElementById('my_button').remove();" 

和按鈕被從DOM中刪除。

2

這是不是達到你所期望的功能的方式,單擊處理程序可以完全用JavaScript綁定。

嘗試以下操作:

document.getElementById('my_button').onclick = function() { 
    var toggle = false; 
    return function (e) { 
    toggle = !toggle; 
    toggle ? add(this) : remove(this); 
    }; 
}(); 
相關問題