Javascript HTML 字符串 - 注入(inject)文档

标签 javascript jquery html dom

这是我的 HTML:

 <ul id="myUL">
</ul>

这就是我正在做的:

var myString = "    &lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Something Else&lt;/li&gt;"

var div = document.createElement('div');
div.innerHTML = myString;
$("#myUL").append(div.innerHTML);

这是我收到的:

<ul id="myUL" >
   &lt;li&gt;&lt;a href="www.google.com"&gt;Google&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Something Else&lt;/li&gt;
</ul>

这是我想要收到的:

<ul id="myUL">
   <li>
    <a href="www.google.com">Google</a>
  </li>    
  <li>
    Something Else
  </li> 
</ul>

有什么建议吗?

最佳答案

首先请注意,您不能将 div 附加到 ul,因为它是无效的 HTML。 ul 只能包含 li 作为 child 。

问题本身是因为您的字符串包含转义的 HTML。您可以使用纯字符串:

var myString = '<li><a href="http://www.google.comp">Google</a></li><li>Something Else</li>';
$("#myUL").append(myString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myUL"></ul>

或者你可以取消转义字符串:

var myString = "&lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Something Else&lt;/li&gt;"
$("#myUL").append(htmlDecode(myString));

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myUL"></ul>

参见 this question有关 htmlDecode() 函数的更多信息。

关于Javascript HTML 字符串 - 注入(inject)文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39724440/

相关文章:

JavaScript:为什么原生 Array.prototype.map 比 Chrome 控制台中的 for 循环更快?

javascript - 将字符串从拆分破坏为命名对象

javascript - 通过Ajax进行文件下载操作

javascript - 如何在选择下拉菜单中设计有序列表

javascript - Fullcalendar 不能在 Windows 机器上的 FF 中工作

javascript - 斐波那契数列 "Show the mathematical sequence"

javascript - 想要将一个额外的列值传递给 $scope.seriesSelected

javascript - 单击按钮从数据库中删除表行

jquery - 占位符和 ie9

javascript - 未捕获的语法错误 : missing ) after argument list when write javascript in PHP code