This question already has answers here:
What chars needs escaping in querySelector?

(2个答案)


2年前关闭。




正在看https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector#Escaping_special_characters

而且我听不懂这部分:

// "#fooar" (\b is the backspace control character)
console.log('#foo\bar');
 // Does not match anything
document.querySelector('#foo\bar');

console.log('#foo\\bar'); // "#foo\bar"
console.log('#foo\\\\bar'); // "#foo\\bar"
document.querySelector('#foo\\\\bar');
<div id="foo\bar"></div>
<div id="foo:bar"></div>


我是JavaScript的初学者,不理解为什么4个斜杠,我发现了另一个类似的问题,但是我不明白答案。

我试图在“foo \ bar”上运行document.getElementById,它可以用2个斜杠正常工作,这对我来说很有意义,因为您需要一个额外的反斜杠来转义第一个反斜杠,但是为什么在使用querySelector时还要额外的3个斜杠?

我在这里查看过类似的帖子,但答案对我来说并不明确,我正在寻找一个简单的细分解释,以了解此处发生的事情以及我确实理解(双反斜杠)和queryselector(使用4)。

最佳答案

根据MDN Web文档,有关litteral Strings:



现在,关于 Document.querySelector method:



Document.getElementById 不需要这样的东西(没有给出解释,可能是出于遗留原因)。现在,回到我们的问题:

将过程视为两次通过的格式,让我们将其向向后查看:

  • 您需要将反斜杠发送到 querySelector 。为了满足querySelector的要求,您需要对其进行一次转义:"#foo\\bar"
  • 如果要在 Javascript字符串中表示反斜杠,则需要对其进行转义。让我们逃避每个反斜杠;我们得到"#foo\\\\bar"
  • 关于javascript - 如何理解document.queryselector中的转义字符? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52992709/

    10-12 07:37