将HTML特殊字符写入变量

时间:2017-10-31 20:15:28

标签: javascript jquery

$("<h2/>", {"class" : "wi wi"+data.today.code}).text(" " + data.city + data.today.temp.now + "F").appendTo(custom_example);

您好,我正在尝试更改上面的代码,在(F)arenheit标记之前添加度数图标。我已经尝试输入+ html("&#176;") +但它不起作用。我的JS非常粗糙,我希望在我花费太长时间尝试和失败之前,我可以在这里得到快速答案。谢谢!

我希望最终结果能够打印出如下内容:恩西尼塔斯65°F

3 个答案:

答案 0 :(得分:5)

特殊字符是必须由反斜杠\转义的字符,如:

  • 单引号\'
  • 双重引用\"
  • 反斜杠\\

度数°不是特殊字符,你可以按原样写出来。

修改:如果您想使用°F的unicode,请写下:'\u2109'

答案 1 :(得分:0)

Escape Special Characters JavaScript

JavaScript使用\(反斜杠)作为转义字符:

  • \'单引号
  • \“double quote
  • \ backslash
  • \ n新行
  • \ r \ n回车
  • \ t tab
  • \ b退格
  • \ f form feed
  • \ v vertical tab(IE&lt; 9将'\ v'视为'v'而不是垂直制表符 ( '\ X0B')。
  • 如果需要考虑跨浏览器兼容性,请使用\ x0B而不是\ v。) \ 0 null字符(U + 0000 NULL)(仅当下一个字符不是a时 十进制数;否则它是一个八进制转义序列)

请注意,JSON字符串中不允许使用\ v和\ 0转义。

答案 2 :(得分:0)

首先,学位角色不需要被转义。因此,只需输入"°F"即可完成工作。

但是,如果您对JS代码的代码页有疑问,可以使用 JavaScript 转义序列。 JS转义序列与HTML转义完全不同。根本不支持十进制值。首先,您必须将176转换为十六进制:b0。正确转义的"°F"等效值为"\xb0F"。对于平台源代码编辑器的代码页问题,它也可以工作并且更加健壮。

如果您确实要分配HTML代码,则需要使用.html()功能。但这与.text()是互斥的。因此,在这种情况下,所有的内容都需要是HTML而不是纯文本。否则会出现HTML注入漏洞。即你需要在data.citydata.today.temp.now中正确地转义尖括号和其他一些符号。

JS本身没有内置函数来转义HTML。但是JQuery提供了一个技巧:$('&lt;div/&gt;').text(data.city).html()将返回适当的转义HTML。有关详细信息,请参阅HTML-encoding lost when attribute read from input field

我建议您不要使用.html(),除非您真的需要它,例如如果您想将样式或格式仅应用于文本的部分