删除子元素但保留其内容

时间:2013-07-02 15:04:24

标签: javascript

在onclick事件期间删​​除strong元素的最佳方法是什么?

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
</head>
<body>
    <span onclick="testfx();"><strong>Test without styles</strong></span>
</body>
</html>
<script type="text/javascript">
    function testfx() { alert('test'); }
</script>

2 个答案:

答案 0 :(得分:16)

嗯,这是:http://tinker.io/1f282/1

el.addEventListener('click', function () {
    var toRemove = this.getElementsByTagName('strong')[0];

    if (!toRemove) {
        return;
    }

    while (toRemove.firstChild) {
        el.appendChild(toRemove.firstChild);
    }
});

(其中el是你的范围)。注意一个非常重要的事情:你不应该在你的HTML中混合使用javascript。它在各种方面都很糟糕,你只需谷歌“关注点分离”和“不引人注目的javascript”来了解原因。

答案 1 :(得分:1)

您应该在脚本文件中处理(javascript)事件,而不是在HTML中。它会帮助你,

  • 从网页中分离功能(“行为层”) 结构/内容和介绍
  • 避免传统JavaScript问题的最佳做法 编程(例如浏览器不一致和缺乏可伸缩性)
  • 逐步增强以支持可能不支持的用户代理 高级JavaScript功能

你可以试试这个,

var x = document.getElementById("test");
var y = document.getElementById("testChild");
x.addEventListener('click', function () {
    this.removeChild(y);
});

Test Link

修改

如果您只想删除“强”效果,请执行此操作,

var x = document.getElementById("test");
var y = document.getElementById("testChild").innerHTML;
x.addEventListener('click', function () {
    this.innerHTML = y;
});

Test Link