如果你想拥有的浏览器为你做的工作逃避,我可能会使用该临时的元素,那么使用它的innerHTML
作为参数createTextNode
:
function myFunc(){
var prnt = document.getElementById("tarea");
var str = prnt.value;
var div = document.createElement('div');
div.appendChild(document.createTextNode(str));
prnt.appendChild(document.createTextNode(div.innerHTML));
}
myFunc();
<textarea id="tarea">Testing & < ></textarea>
但极少逃脱HTML是很简单的,你不一定需要去全猪:
str = str.replace(/&/g, "&").replace(/</g, "<");
(无需>
,这很好,因为它是你一个标签内不是。)
如:
function myFunc(){
var prnt = document.getElementById("tarea");
var str = prnt.value;
str = str.replace(/&/g, "&").replace(/</g, "<");
prnt.appendChild(document.createTextNode(str));
}
myFunc();
<textarea id="tarea">Testing & < ></textarea>
注意,这两个那些追加,因为这就是你的代码试图做的;他们不用替换的内容textarea
。如果要这样做,请在追加文本节点之前将其value
设置为""
。
我正在exxting转义字符串。例如:<html> for – Msch 2015-03-31 16:25:21
对不起。什么都没发生。我在textarea中输入,按下触发该功能的按钮,但textarea的值(即)保持不变。 – Msch 2015-03-31 16:37:07
通过上面的代码,你会看到文本的变化(至少在Chrome上,我没有尝试过跨浏览器)。你不会看到你想说什么,但你会看到文本被追加。 – 2015-03-31 16:38:09