从动态的javascript变量中剥离HTML标签

时间:2014-01-24 09:01:01

标签: javascript html

我有以下html:

<div id="iView" name="iView" contenteditable="true" style="width: 545px; height:185px; border: 2px solid green;"><p>jgfj</p>hello this</div>
    <input type="button" value="click" onClick="getEditorText();" />

我的剧本就在这里:

function getEditorText(){
    var viewContent = document.getElementById('iView').innerHTML;
    alert(viewContent);
    //alert(viewContent.replace(/<([^>]+)>/ig,"")); nothing works
    //alert(viewContent.replace(/(<\S([^>]+)>)/ig,"")); nothing works
    //alert(viewContent.replace(/<[^>]+>/ig,"")); nothing works
    //alert(viewContent.replace(/<\/?[^>]+(>|$)/g, "")); nothing works
    //alert(viewContent.replace(/<(?:.|\n)*?>/gm, '')); nothing works
}

在我的第一个警报中,它省略了标签..

但是当我动态包含标签时..它没有省略标签..那么让我知道如何使用javascript动态去除html标签,而不是jquery?

3 个答案:

答案 0 :(得分:1)

应该正常运行的代码的修改版本:

function getEditorText() {

    var el = document.getElementById('iView'),
        viewContent = el.innerText || el.textContent;

    viewContent = viewContent.replace(/<([^>]+)>/ig,"")
        .replace(/(<\S([^>]+)>)/ig,"")
        .replace(/<[^>]+>/ig,"")
        .replace(/<\/?[^>]+(>|$)/g, "")
        .replace(/<(?:.|\n)*?>/gm, '');

    el.innerHTML = viewContent;
}

演示:http://jsfiddle.net/LRCXM/2/

请注意,Firefox需要textContent而不是innerText

答案 1 :(得分:0)

使用innerText代替innerHTMLDemo

答案 2 :(得分:0)

您可以使用此正则表达式去除html标记。

var strippedString=viewContent.replace(/<(?:.|\n)*?>/gm, '');