如果你想擁有的瀏覽器爲你做的工作逃避,我可能會使用該臨時的元素,那麼使用它的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