2014-10-06 37 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); 
    }; 
}(); 
相关问题