3

我正在尝试将字符转换为和<等。>&lt;&gt;

用户输入取自文本框,然后复制到名为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 参数的正则表达式来确保在整个字符串中搜索所有出现的值。

于 2010-06-18T01:02:13.607 回答