有没有办法用Javascript写文本(而不是解码特殊字符)?我尝试了document.write()
,但似乎将&
等字符转换回&
,而JQuery的.text()
保留&
。
我的代码
<script>document.write('&');</script>
返回的内容
&
我希望它返回
&
答案 0 :(得分:3)
只需将所有&
转换为&
即可,它应该适合您:
stringToBeWritten = "Hi&Hi - Hi&Hi";
stringToBeWritten = stringToBeWritten.replace(/(&)/gi, "&");
document.write(stringToBeWritten);
<script>
stringToBeWritten = "Hi&Hi - Hi&Hi";
stringToBeWritten = stringToBeWritten.replace(/(&)/gi, "&");
document.write(stringToBeWritten);
</script>
&#13;
ps:不要使用 document.write()
因为它不好。请参阅Why is document.write considered a "bad practice"?
解决方案2
我们实际上可以使用浏览器本身来实现这一目标。
function escapeStuff (unescaped) {
DiV = document.createElement("div");
DiV.innerText = unescaped;
return DiV.innerHTML;
}
&#13;
<input type="text" id="un" value="& <>" /> <input onclick="res.innerText = escapeStuff (un.value);" value="Escape it!" type="button" />
<div id="res"></div>
&#13;
答案 1 :(得分:3)
实际上,只需使用element.textContent
代替document.write
:)
例如,请检查this JSFiddle link或下面的代码段:
document.getElementById('myspan').textContent= 'Click <HERE>';
document.write('Click <HERE>');
&#13;
With element.textContent: <span id="myspan"></span>
<br />
With document.write():
&#13;
更新: 已根据评论中Leon Adler的建议,将innerText
替换为textContent
。
答案 2 :(得分:0)
html 和 text 之间存在差异。您想要设置文字:
var myText = 'A & B';
// Setting HTML: Result text will be "A & B"
document.write(myText); // <- don't use document.write!
jQuery('#myElement').html(myText);
myElement.innerHTML = myText;
// Setting Text: Result text will be "A & B"
document.write('A & B'.replace(/&/g, '&').replace(/</g, '<')); // <- don't use document.write!
jQuery('#myElement').text(myText); // removes all children and sets the text of the element
myElement.textContent = myText; // sets the text of the element
myElement.innerText = myText; // removes all children and sets the text of the element
请注意,document.write
通常是一个坏主意,因为它只适用于您的网页未完全加载,以及稍后使用document.write
(例如点击按钮时)将替换您网页的整个内容。
我也可以建议不要使用innerText
。它是一个非标准属性,由Internet Explorer定义,后来由Chrome改编,但在Firefox中不受支持(很好,因为它不在标准中)。您可以改为使用textContent
。