0

JavaScript は my<を に変換し&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>
4

3 に答える 3

1

innerTextの代わりに使用しinnerHTMLます。http://jsfiddle.net/WVf95/

于 2012-10-15T11:47:24.637 に答える
0

あなたの問題は、間違ったアプローチを使用してテキストを表示することalert()です。

一部の文字は、HTML テキストでは使用できません (HTML タグおよびエンティティに使用されます)。innerHTMLテキストが適切にエスケープされていることを確認します (つまり、タグとエスケープされたテキストを確認できます)。

タグとテキストを で表示したい場合alert()、解決策はありません。

テキストのみが必要な場合は、自分で抽出する必要があります。そのための組み込みサポートはありません。また、実装するのも簡単ではありません。ページにjQueryを含めることをお勧めします。次に、次の方法でテキストを取得できます。

function alertIt(ID) {
    alert($(ID).text());
}
于 2012-10-15T11:46:32.273 に答える
0

Using textContent instaed of innerHTML or innerText is a solution.

于 2012-10-15T12:42:25.757 に答える