是否存在可以将自关闭标记转换为Javascript中的显式标记的方法或函数? 例如:
<span class="label"/>
转换为:
<span class ="label"></span>
我想将iframe中的新HTML复制到主页的outerHTML,因为生成的新HTML包含自关闭标记,outerHTML不识别它们然后不会更改,页面也不会没有正确显示。但是当格式是标准格式时,即使用非自动关闭标记时,outerHTML将采用新的HTML,并且页面显示完美。这就是我想要更改标记的原因。
事实上,我不想解析HTML,我只是想找到“&lt; span ... /&gt;”并将其替换为“&lt; span ...&gt;&lt; / span&gt; “
答案 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模式。