为什么JavaScript会转换我的<进入>

时间:2012-10-15 11:33:12

标签: javascript

JavaScript会将我的<转换为&gt;。我想提醒它,但我的消息是使用@#&amp;*()}{&gt;?&gt;?等编码标记 - 如何正常显示阻止执行作为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: ~!@#&amp;*()}{&gt;?&gt;?>|... 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>

3 个答案:

答案 0 :(得分:1)

使用innerText代替innerHTMLhttp://jsfiddle.net/WVf95/

答案 1 :(得分:0)

您的问题是您使用了错误的方法来使用alert()显示文本。

某些字符在HTML文本中是非法的(它们用于HTML标记和实体)。 innerHTML将确保文本被正确转义(即您可以看到标记和转义文字)。

如果您想查看alert()中的标记和文字,则无法解决问题。

如果您只想要文本,那么您必须自己提取。没有内置的支持。实施起来也不是一件容易的事。我建议在您的网页中加入jQuery;那么你可以通过以下方式获得文字:

function alertIt(ID) {
    alert($(ID).text());
}

答案 2 :(得分:0)

使用textContent代替innerHTMLinnerText是一种解决方案。