尝试获取元素的HTML代码值时输出奇怪?

时间:2018-05-07 05:14:57

标签: javascript jquery html

我有一个myArray =元素,其中包含以下文字:

<span>

当我使用jQuery获取其List<Tuple<string, string>>属性时,我得到一个奇怪的结果:

html

我意识到它将值解析为HTML,但使用List<tuple<string, string="">&gt;</tuple<string,>也会返回不正确的值。 任何人都可以解释为什么会这样,我该如何解决?

这是一个重现问题的片段:

&#13;
&#13;
.text()
&#13;
console.log($('#lbl').html());
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

为什么会发生这种情况:因为您的HTML无效。除分隔标记外,您不应使用<>个字符。相反,您必须分别使用&lt;&gt;。您的浏览器会尝试对此类错误保持健壮,因此它会尝试理解那些看起来很奇怪的标记。你得到的结果是它可以做的最好的结果(但另一个浏览器可能会有不同的解释,因为这不是标准的)。

如何解决它:将其写为正确的HTML,即:

<span id="lbl">List&lt;Tuple&lt;string, string&gt;&gt;</span>

答案 1 :(得分:1)

您需要将<替换为'&lt;',将>替换为'&gt;',以html显示。

console.log($('#lbl').html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="lbl">List&lt;Tuple&lt;string, string&gt;&gt;</span>

答案 2 :(得分:0)

var x = document.createElement("span");
x.innerText = "List<Tuple<string, string>>";
document.getElementById("parent").append(x);

console.log("Text : " +document.getElementsByTagName("span")[0].innerText);
console.log("HTML : " +document.getElementsByTagName("span")[0].innerHTML);
<div id="parent">
  
</div>

问题似乎在于撰写文本。浏览器首先渲染它,似乎是转换字符。