3

<andのような文字>&lt;and&gt;などに変換しようとしています。

ユーザー入力はテキスト ボックスから取得され、 という DIV にコピーされchangerます。

ここに私のコードがあります:

function updateChanger() {
    var message = document.getElementById('like').value;
    message = convertHTML(message);
    document.getElementById('changer').innerHTML = message;
}

function convertHTML(input)
{
    input = input.replace('<', '&lt;');
    input = input.replace('>', '&gt;');
    return input;
}

しかし、それは に取って代わるようには見えませ><。このようにも試しました:

input = input.replace('<', '&lt;').replace('>', '&gt;');

しかし、私は同じ結果を得ます。

ここで私が間違っていることを誰かが指摘できますか? 乾杯。

4

2 に答える 2

6

これを行うためのより確実な方法は、HTML テキスト ノードを作成することです。そうすれば、他のすべての潜在的に無効なコンテンツ (< と > だけではありません) が変換されます。例えば:

var message = document.getElementById('like').value;
document.getElementById('changer').appendChild(document.createTextNode(message));

アップデート

キーを押すたびにイベントが発生しているとのことでした。それがこのコードをトリガーしている場合は、テキストを追加する前に、以前に div にあったものを削除する必要があります。これを行う簡単な方法は次のとおりです。

var message = document.getElementById('like').value;
var changer = document.getElementById('changer');
changer.innerHTML = '';
changer.appendChild(document.createTextNode(message));
于 2010-06-18T00:58:55.790 に答える
1

次のようなものを試してください。

function convertHTML(input)
{
  input = input.replace(/>/g, '&gt;');
  input = input.replace(/</g, '&lt;');

  return input;
}

replaceは、文字列内の最初に出現する>または<のみを置換します。<または>のすべての出現を置換するには、正規表現をg paramで使用して、文字列全体ですべての値の出現が検索されるようにします。

于 2010-06-18T01:02:13.607 に答える