javascript - document.querySelector 不适用于 id 中的“=”符号
问题描述
document.querySelector()
在元素中使用特定类型的 id 时,我遇到了函数错误。当 idcanvas-=
为时,querySelector 失败并出现错误 -> 无法在“文档”上执行“querySelector”:“#canvas-=”不是有效的选择器。
但是当我使用时document.getElementById()
,它可以工作。我可以"[id='canvas-=']"
在 querySelector 中使用,但为什么会失败document.querySelector("#canvas-=")
?
document.querySelector("#canvas-=")
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p id="canvas-=">This is a paragraph.</p>
<script>
const elem = document.querySelector("#canvas-=");
console.log(elem.innerHTML);
</script>
</body>
</html>
document.getElementById("canvas-=")
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p id="canvas-=">This is a paragraph.</p>
<script>
const elem = document.getElementById("canvas-=");
console.log(elem.innerHTML);
</script>
</body>
</html>
=
但是,如果我从 id中删除,一切正常。插入它以任何方式都不起作用。==-
, =-
,-=
所有这些都给出了错误。那么这个符号有什么问题,=
为什么第二种方法有效但第一种方法无效?
解决方案
querySelector
方法使用 CSS3 选择器来查询 DOM。
这意味着
在 CSS 中,标识符(包括选择器中的元素名称、类和 ID)只能包含字符 [a-zA-Z0-9] 和 ISO 10646 字符 U+00A0 及更高,加上连字符 (-) 和下划线 ( _); 它们不能以数字、两个连字符或一个连字符后跟一个数字开头。
显然你有=
。所以没有=
它可以正常工作。
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p id="canvas-">This is a paragraph.</p>
<script>
const elem = document.querySelector("#canvas-");
console.log(elem.innerHTML);
</script>
</body>
</html>
更多关于它。https://www.w3.org/TR/CSS21/syndata.html#characters 结帐主题 4.1.3
推荐阅读
- c - C中的阶乘递归(分段错误)
- d - 将 std.algorithm.iteration.sum 与 Duration[] 一起使用
- amazon-web-services - 在父 AWS 主域上创建的子域不起作用
- android - 在滑动时上下滑动片段
- java - Maven POM file for running tests(not JUnit)
- java - How to implment SpanQuery with MultiFieldQuery in java using lucene
- c# - 将字符串数组与“FileInfo / GetFiles”进行比较
- java - 将循环遍历数组java中的条目的while循环
- javascript - One or more parameter values were invalid: An AttributeValue may not contain an empty string
- jquery - 如何使克隆元素更改其关联(克隆)亲属