Javascript HTML字符串 - 注入文档

Sky*_*rdw 3 html javascript jquery dom

这是我的HTML:

 <ul id="myUL">
</ul>
Run Code Online (Sandbox Code Playgroud)

这就是我正在做的事情:

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);
Run Code Online (Sandbox Code Playgroud)

这是我收到的:

<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>
Run Code Online (Sandbox Code Playgroud)

这是我想要接受的:

<ul id="myUL">
   <li>
    <a href="www.google.com">Google</a>
  </li>    
  <li>
    Something Else
  </li> 
</ul>
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

Ror*_*san 8

首先请注意,您无法将a附加div到a,ul因为它是无效的HTML.ul只能包含li孩子.

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

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

或者你可以解开字符串:

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;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myUL"></ul>
Run Code Online (Sandbox Code Playgroud)

有关htmlDecode()功能的更多信息,请参阅此问题.