将DOM元素转换为原始HTML字符串

时间:2013-12-11 13:38:58

标签: javascript html

此类问题的大部分答案都建议使用innerHTMLouterHTML。但我没有得到我想要的东西。例如:

var el = document.createElement("DIV");
el.innerHTML = "<span><% blabla %></span>";
// let's say that el is actually initialized with document.getElementById
// and el = <div><span><% blabla %></span></div>
console.log(el.outerHTML);

上述代码的结果是

"<div><span>&lt;% blabla %&gt;</span></div>"

所以,问题出现在<>以及事实上我没有得到它们。好的,我知道浏览器的行为是正常的,我可以使用.replace(/&lt;/g, '<').replace(/&gt;/g, '>')来解决问题。但请查看以下内容:

el.innerHTML = "<span><% for(var i=0; i<list.length; i++) { %> bla bla <% } %>";
console.log(el.outerHTML);

结果无法修复:

<div><span>&lt;% for(var i=0; i<list.length; i++)="" {="" %=""> bla bla &lt;% } %&gt;</list.length;></span></div>

任何解决此问题的想法。

编辑:

我发现问题出在for循环的<符号中。因此,如果我用for(var i in list)替换它,那么outerHTML将返回正确的值。

1 个答案:

答案 0 :(得分:-1)

这是一个肮脏的伎俩,如果您需要使用该字符串做一些“时髦”的事情,可能无法帮助您,但是如果您不介意让浏览器为您完成部分工作,那么它将会起作用:< / p>

你可以在div中“显示”它,然后在js中再次获取它,你就可以得到完全的html字符串。

例如:

 var string = "&lt; blabla &gt;";
 $('converterDiv').html(string); // jQuery because I'm lazy
 var convertedString = $('converterDiv').html();

再次......是一个“坏”的伎俩,但可能对你有帮助。