innerHTML.replace不能在Firefox中工作但在IE中工作

时间:2014-10-06 14:40:32

标签: javascript firefox innerhtml

我想重命名按钮的onclick方法。首先我的Button有以下代码:

<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:

var parentNode = removeButton.parentNode;

在Internet Explorer中,它可以正常工作,但不适用于firefox

2 个答案:

答案 0 :(得分:2)

这不是实现所需功能的方法,点击处理程序可以完全用javascript绑定。

尝试以下方法:

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

答案 1 :(得分:0)

虽然我会推荐丰富的答案,并将这些逻辑放入点击处理程序中,但问题可能会很有趣。

Firefox正确地替换了你的替换并调用按钮native remove-method,因为click处理程序有按钮的范围。所以

onclick="remove( this )"

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

然后按钮从dom中删除。