Javascript,字符串带有'<'或者'>'

Javascript, String with '<' or '>'

本文关键字:lt 或者 gt Javascript 字符串      更新时间:2024-03-22

我试图用包含<>的文本的Javascript设置div的内部文本,但它不起作用。有什么想法吗?

这是我的代码示例(简单的HTML和简单的Javascript),带有测试点击操作。

<html>
<body>
<div id="aaa">
div
</div>
<hr>
<a onclick="getElementById('aaa').innerHTML = 'abc';">click ok1</a>
<p>
<a onclick="var str='asbc'; getElementById('aaa').innerHTML = str;">click ok2</a>
<p>
<a onclick="getElementById('aaa').innerHTML = '<uio>';">click nok1</a>
<p>
<a onclick="getElementById('aaa').innerHTML = '&lt;wer&gt;';">click nok2</a>
<p>
<a onclick="var str='<abc>'; getElementById('aaa').innerHTML = str;">click nok3</a>
<p>
<a onclick="var str='&lt;abc&gt;'; getElementById('aaa').innerHTML = str;">cl nok4</a>
<p>
<a onclick="alert ('&lt;wer&gt;');">click a</a>
<p>
<a onclick="alert ('<w34r>');">click b</a>
<p>
</body>
</html>

它在警报中起作用,但在设置innerHTML时不起作用。。。如果没有<>,它也会工作,所以一定是有字符的。

不要使用innerHTML插入<>。使用textContent:

getElementById('aaa').textContent = '<uio>'

如果在字符串中包含实际的"<"">"字符,如"<uio>",则当您将其设置为innerHTML时,浏览器会将其视为无法识别的html标记,并且不会显示任何内容。

当您在JS中使用与标记内联的"&lt;abc&gt;"等html实体时,浏览器首先将其解析为html,然后将其视为JS,因此JS引擎必须使用"<abc>"

您可以通过在内联onclick处理程序中执行以下操作来绕过此问题:

document.getElementById("aaa").innerHTML ='&amp;lt;abc&amp;gt;'

因为当JS引擎获得它时,它将是CCD_ 19。

或者,您可以将JS移动到脚本元素中,然后使用"&lt;abc&gt;"