我正在尝试将<
和>
等字符转换为<
和>
等。
用户输入来自文本框,然后复制到名为changer
的DIV中。
这是我的代码:
function updateChanger() {
var message = document.getElementById('like').value;
message = convertHTML(message);
document.getElementById('changer').innerHTML = message;
}
function convertHTML(input)
{
input = input.replace('<', '<');
input = input.replace('>', '>');
return input;
}
但它似乎不会替换>
,而只会替换<
。也试过这样:
input = input.replace('<', '<').replace('>', '>');
但我得到的结果相同。
有谁可以指出我在这里做错了什么?欢呼声。
答案 0 :(得分:6)
更有效的方法是create an HTML text node;这样,所有其他可能无效的内容(不仅仅是&lt;和&gt;)被转换。例如:
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));
答案 1 :(得分:1)
尝试这样的事情:
function convertHTML(input)
{
input = input.replace(/>/g, '>');
input = input.replace(/</g, '<');
return input;
}
替换仅替换第一次出现的&gt;或者&lt;在字符串中,为了替换所有出现的&lt;或者&gt;,使用带有g参数的正则表达式来确保搜索整个字符串以查找所有出现的值。