【问题标题】:Write HTML Special Character into a Variable将 HTML 特殊字符写入变量
【发布时间】:2017-10-31 20:15:28
【问题描述】:

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

您好,我正在尝试更改上面的代码以在 (F)arenheit 标记之前添加度数图标。我试过输入+ html("°") +,但它不起作用。我的 JS 相当粗糙,我希望在我花了太长时间尝试和失败之前能在这里得到一个快速的答案。谢谢!

我希望最终结果打印如下:Encinitas 65°F

【问题讨论】:

  • 只需将其更改为… + "°F"。这个角色一点也不特别。
  • 你调用的 html 函数是什么?
  • 这是一个有效的 jQuery 选择器,有一个带尖括号的实际元素吗?
  • 使用 .html() 函数而不是 .text(),因为 text() 会转义任何传入其中的 HTML。
  • <meta charset="UTF-8"> 添加到 HTML 文件的标题中。

标签: javascript jquery


【解决方案1】:

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

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

度数°不是特殊字符,直接写就行了。

编辑:如果要使用°F 的unicode,只需写:'\u2109'

【讨论】:

  • 这就是我最初的想法,但它是“65°F”。不知道发生了什么。
  • 做到了!非常感谢。不知道有°F的unicode。
  • 不客气!如果成功了,请将其标记为正确答案
【解决方案2】:

Escape Special Characters JavaScript

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

  • \'单引号
  • \" 双引号
  • \反斜杠
  • \n 换行
  • \r 回车
  • \t 制表符
  • \b 退格
  • \f 换页
  • \v 垂直制表符(IE
  • 如果考虑跨浏览器兼容性,请使用 \x0B 而不是 \v。) \0 空字符 (U+0000 NULL)(仅当下一个字符不是 十进制数字;否则它是一个八进制转义序列)

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

【讨论】:

    【解决方案3】:

    首先,度数字符不需要转义。所以只需输入"°F" 就可以了。

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

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

    JS 本身并没有内置函数来转义 HTML。但是 JQuery 提供了一个技巧:$('<div/>').text(data.city).html() 将返回适当转义的 HTML。详情请见HTML-encoding lost when attribute read from input field

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2021-08-29
      • 2012-11-21
      相关资源
      最近更新 更多