删除按钮删除自身而不是目标元素

时间:2016-07-03 14:38:14

标签: javascript html5 button removechild

我有一个非常困扰的问题,我无法理解。

我有一个div,其中包含2个段落,还有一个可点击的按钮,用于删除第一个p元素,但奇怪的是该按钮将自行删除,p元素继续活着!

这是我的代码的结果:

Code's result

但是当我点击按钮时,我得到了这个:

onclick

以下是我的代码:

<div>
  <p id="id_1">The first paragraph.</p>
  <p id="id_2">The second one.</p>
</div><br>
<button onclick="remove(document.getElementById('id_1'));">click me!</button>
<script>
  function remove(elem)
    {
      var parent=elem.parentNode;
      parent.removeChild(elem);
    }

</script>

2 个答案:

答案 0 :(得分:4)

函数名“remove”被按钮元素本身的原生“remove”方法隐藏。如果更改名称,则按预期工作。

使用HTML“onfoo”属性建立的事件处理程序在特殊构造的范围内执行,该范围包括元素的DOM节点上的方法(和其他属性)。这只是众多原因之一,最好使用JavaScript通过addEventListener()附加事件处理程序。

答案 1 :(得分:2)

您需要做的就是重命名您的功能并避免使用remove作为其名称(其原因包含在@Pointy的答案中)。试试这个:

<div>
  <p id="id_1">The first paragraph.</p>
  <p id="id_2">The second one.</p>
</div><br>
<button onclick="removeElement(document.getElementById('id_1'));">click me!    </button>
<script>
  function removeElement(elem)
{
  var parent=elem.parentNode;
  parent.removeChild(elem);
}

</script>