JavaScript会将我的<
转换为>
。我想提醒它,但我的消息是使用@#&*()}{>?>?
等编码标记 - 如何正常显示但阻止执行作为HTML代码?
<span id="ID" onClick="alertIt(this.id);">
<p>Some string with special chars: ~!@#&*()}{>?>?>|{">@#$#^#$</p>
<p>Why when clicked it gives something like this:</p>
<p>'<br>
Some string with special chars: ~!@#&*()}{>?>?>|... and so on
<br>'</p>
</span>
<script type="text/javascript">
function alertIt(ID)
{
var ID = ID;
var content = document.getElementById(ID).innerHTML;
alert(content);
}
</script>
答案 0 :(得分:1)
使用innerText
代替innerHTML
。 http://jsfiddle.net/WVf95/
答案 1 :(得分:0)
您的问题是您使用了错误的方法来使用alert()
显示文本。
某些字符在HTML文本中是非法的(它们用于HTML标记和实体)。 innerHTML
将确保文本被正确转义(即您可以看到标记和转义文字)。
如果您想查看alert()
中的标记和文字,则无法解决问题。
如果您只想要文本,那么您必须自己提取。没有内置的支持。实施起来也不是一件容易的事。我建议在您的网页中加入jQuery;那么你可以通过以下方式获得文字:
function alertIt(ID) {
alert($(ID).text());
}
答案 2 :(得分:0)
使用textContent
代替innerHTML
或innerText
是一种解决方案。