在Javascript中将自闭标签更改为显式标签的方法?

时间:2011-05-16 09:09:54

标签: javascript html tags

是否存在可以将自关闭标记转换为Javascript中的显式标记的方法或函数? 例如:

<span class="label"/>

转换为:

<span class ="label"></span>

我想将iframe中的新HTML复制到主页的outerHTML,因为生成的新HTML包含自关闭标记,outerHTML不识别它们然后不会更改,页面也不会没有正确显示。但是当格式是标准格式时,即使用非自动关闭标记时,outerHTML将采用新的HTML,并且页面显示完美。这就是我想要更改标记的原因。


这个html是一个字符串

事实上,我不想解析HTML,我只是想找到“&lt; span ... /&gt;”并将其替换为“&lt; span ...&gt;&lt; / span&gt; “

4 个答案:

答案 0 :(得分:3)

尝试此操作来替换字符串中的所有自闭标签(xml / html)

function removeSelfClosingTags(xml) {
    var split = xml.split("/>");
    var newXml = "";
    for (var i = 0; i < split.length - 1;i++) {
        var edsplit = split[i].split("<");
        newXml += split[i] + "></" + edsplit[edsplit.length - 1].split(" ")[0] + ">";
    }
    return newXml + split[split.length-1];
}

答案 1 :(得分:1)

谢谢大家,我终于使用愚蠢的方法来改变自我关闭的标签,也许它会帮助像我这样的人:

var splitSpan = textHTML.split(">");
var i=0;
for(i=0;i<splitSpan.length-1;i++){
    var lengthSpan = splitSpan[i].length;
    var subSpan = splitSpan[i].substring(1,5);
    var endSpan = splitSpan[i].charAt(lengthSpan-1);

    if(subSpan=="span" && endSpan=="/")
    {

        splitSpan[i]=setCharAt(splitSpan[i],lengthSpan-1,'>');
        splitSpan[i]=splitSpan[i]+"</span>";
    }
    else
    {

        splitSpan[i]=splitSpan[i]+">";
    }

function setCharAt(str,index,chr){

if(index > str.length-1) return str;

return str.substr(0,index) + chr + str.substr(index+1);

}

答案 2 :(得分:1)

我使用正则表达式:

var spansFixed = htmlString.replace(/<span(.*)\/>/g, '<span$1></span>');

答案 3 :(得分:0)

我想不出任何需要,因为它们会被浏览器自动转换。这可以通过以下方式证明:

var div = document.createElement('div');
div.innerHTML = '<span/>';
var span = div.getElementsByTagName('span')[0];
span.innerHTML = 'hello';
alert(span.innerHTML);

编辑:这似乎只适用于XML模式。