使用Javascript编写纯文本?

时间:2015-11-29 17:15:20

标签: javascript text

有没有办法用Javascript写文本(而不是解码特殊字符)?我尝试了document.write(),但似乎将&等字符转换回&,而JQuery的.text()保留&

我的代码

<script>document.write('&amp;');</script>

返回的内容

&

我希望它返回

&amp;

3 个答案:

答案 0 :(得分:3)

只需将所有&转换为&amp;即可,它应该适合您:

stringToBeWritten = "Hi&Hi - Hi&amp;Hi";
stringToBeWritten = stringToBeWritten.replace(/(&)/gi, "&amp;");
document.write(stringToBeWritten);

&#13;
&#13;
<script>
  stringToBeWritten = "Hi&Hi - Hi&amp;Hi";
  stringToBeWritten = stringToBeWritten.replace(/(&)/gi, "&amp;");
  document.write(stringToBeWritten);
</script>
&#13;
&#13;
&#13;

ps:不要使用 document.write() 因为它不好。请参阅Why is document.write considered a "bad practice"?

解决方案2

我们实际上可以使用浏览器本身来实现这一目标。

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:3)

实际上,只需使用element.textContent代替document.write:)

例如,请检查this JSFiddle link或下面的代码段:

&#13;
&#13;
document.getElementById('myspan').textContent= 'Click &lt;HERE&gt;';
document.write('Click &lt;HERE&gt;');
&#13;
With element.textContent: <span id="myspan"></span>
<br />
With document.write(): 
&#13;
&#13;
&#13;

更新: 已根据评论中Leon Adler的建议,将innerText替换为textContent

答案 2 :(得分:0)

html text 之间存在差异。您想要设置文字

var myText = 'A &amp; 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 &amp; B"
document.write('A &amp; B'.replace(/&/g, '&amp;').replace(/</g, '&lt;'));   // <- 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