javascript - 修改 HTMLCollection 返回所有 innerHTML

标签 javascript jquery html

我想用我的 HTMLCollection 去除它包含的元素的标签,例如,给定 html:

<p><span>Hello, <i>world!</i></span> Some more text</p>

我想回去

<p>Hello, <i>world!</i> Some more text</p>

当时我在我的 html 中搜索 span 标签,它返回一个 HTMLCollection,这似乎是我获取所有 span 标签的最简单方法,我如何使用这个集合完全剥离标签并保留所有 innerhtml?

    $scope.modifyHtml = function (html) { 
        var el = document.createElement('div');
        el.innerHTML = html;

        var spans = el.getElementsByTagName('span');

        //Remove these spans from el but keep their inner!

        return el.innerHTML;
    }

最佳答案

因为用 jQuery 标记了

$scope.modifyHtml = function (html) {
    var $tmp = $('<div />', {
        html: html
    });

    //remove span elements    
    $tmp.find('span').contents().unwrap();

    return $tmp.html()
}

演示:Fiddle


没有 jQuery

$scope.modifyHtml = function (html) {
    var el = document.createElement('div'),
        spans, span, len;
    el.innerHTML = html;

    spans = el.getElementsByTagName('span'), span;

    for (var i = 0; i < spans.length; i++) {
        span = spans[i];
        len = span.childNodes.length;
        for (var j = 0; j < len; j++) {
            span.parentNode.insertBefore(span.childNodes[0], span)
        }
        span.parentNode.removeChild(span);
    }

    return el.innerHTML;
}

演示:Fiddle , Fiddle2

关于javascript - 修改 HTMLCollection 返回所有 innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29698445/

相关文章:

jquery - 使用 jQuery.animate() 插入 CSS 规则

python - GAE(Python)简单的Ajax调用(无法弄清楚实现这一点所需的基本内容):

php - jquery POST 不在 https 中返回任何结果

html - 选择CSS中的每三个元素

html - 如何在响应式 Bootstrap 3 中反转列的顺序?

javascript - Ajax 在执行下一个函数之前等待 Api 完成

javascript - 保存 HTML 文件后,Javascript 不起作用

JavaScript读取.ini文件

javascript - 拖放图像,在 Canvas 上显示该图像

javascript - 尝试在网站上抓取由谷歌地图API生成的动态数据,但正常抓取返回空白