此类问题的大部分答案都建议使用innerHTML
和outerHTML
。但我没有得到我想要的东西。例如:
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><% blabla %></span></div>"
所以,问题出现在<
和>
以及事实上我没有得到它们。好的,我知道浏览器的行为是正常的,我可以使用.replace(/</g, '<').replace(/>/g, '>')
来解决问题。但请查看以下内容:
el.innerHTML = "<span><% for(var i=0; i<list.length; i++) { %> bla bla <% } %>";
console.log(el.outerHTML);
结果无法修复:
<div><span><% for(var i=0; i<list.length; i++)="" {="" %=""> bla bla <% } %></list.length;></span></div>
任何解决此问题的想法。
编辑:
我发现问题出在for循环的<
符号中。因此,如果我用for(var i in list)
替换它,那么outerHTML将返回正确的值。
答案 0 :(得分:-1)
这是一个肮脏的伎俩,如果您需要使用该字符串做一些“时髦”的事情,可能无法帮助您,但是如果您不介意让浏览器为您完成部分工作,那么它将会起作用:< / p>
你可以在div中“显示”它,然后在js中再次获取它,你就可以得到完全的html字符串。
例如:
var string = "< blabla >";
$('converterDiv').html(string); // jQuery because I'm lazy
var convertedString = $('converterDiv').html();
再次......是一个“坏”的伎俩,但可能对你有帮助。