Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 111是否为有效的HTML id属性,或者document.querySelector()和document.querySelector()是否正确抛出语法错误?_Javascript_Html_Dom_Sgml - Fatal编程技术网

Javascript 111是否为有效的HTML id属性,或者document.querySelector()和document.querySelector()是否正确抛出语法错误?

Javascript 111是否为有效的HTML id属性,或者document.querySelector()和document.querySelector()是否正确抛出语法错误?,javascript,html,dom,sgml,Javascript,Html,Dom,Sgml,给定 const div=document.createElement(“div”); div.id=111; 文件.正文.附件(div); 试一试{ console.log(document.querySelector(“#111”); }捕获(e){ 控制台错误(e); /* 铬: DOMEException:未能对“文档”执行“querySelector”: “#111”不是有效的选择器。 火狐 语法错误:“#111”不是有效的选择器 */ } 试一试{ console.log(doc

给定

const div=document.createElement(“div”);
div.id=111;
文件.正文.附件(div);
试一试{
console.log(document.querySelector(“#111”);
}捕获(e){
控制台错误(e);
/* 
铬:
DOMEException:未能对“文档”执行“querySelector”:
“#111”不是有效的选择器。
火狐
语法错误:“#111”不是有效的选择器
*/
}
试一试{
console.log(document.queryselectoral(“#111”);
}捕获(e){
控制台错误(e);
/* 
铬:
DOMEException:未能对“文档”执行“querySelector”:
“#111”不是有效的选择器。
火狐
语法错误:“#111”不是有效的选择器
*/

}
根据MDN关于HTML
id
属性:

此属性的值不能包含空格(空格、制表符等)

这似乎是唯一的限制。他们注意到HTML4更严格,但仅此而已

根据报告:

该值不得包含任何ASCII空格

这意味着
111
是HTML
id
属性的有效值

querySelector
queryselectoral
但是使用CSS选择器,它们更严格:

包含一个
#
,后跟一个有效的

在CSS中,标识符(包括选择器中的元素名称、类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U+00A0及更高,加上连字符(-)和下划线(33;)它们不能以数字、两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何ISO10646字符作为数字代码(请参阅下一项)。例如,标识符“B&W?”可以写为“B\&W\?”或“B\26 W\3F”

这意味着
#111
不是有效的CSS选择器。相反,请使用:

document.querySelector('[id=“111”]'))
要直接回答您的问题:

“111”
是有效的HTML id属性还是
document.querySelector()和
document.querySelector()正确抛出语法错误


“111”
是有效属性,语法错误被正确抛出。

根据MDN关于HTML
id
属性:

此属性的值不能包含空格(空格、制表符等)

这似乎是唯一的限制。他们注意到HTML4更严格,但仅此而已

根据报告:

该值不得包含任何ASCII空格

这意味着
111
是HTML
id
属性的有效值

querySelector
queryselectoral
但是使用CSS选择器,它们更严格:

包含一个
#
,后跟一个有效的

在CSS中,标识符(包括选择器中的元素名称、类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U+00A0及更高,加上连字符(-)和下划线(33;)它们不能以数字、两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何ISO10646字符作为数字代码(请参阅下一项)。例如,标识符“B&W?”可以写为“B\&W\?”或“B\26 W\3F”

这意味着
#111
不是有效的CSS选择器。相反,请使用:

document.querySelector('[id=“111”]'))
要直接回答您的问题:

“111”
是有效的HTML id属性还是
document.querySelector()和
document.querySelector()正确抛出语法错误


“111”
是一个有效的属性,语法错误被正确抛出。

遇到了一个问题,我不能使用GUID作为ID。如果GUID以字母开头,它就可以工作。如果GUID以数字开头,它将不起作用。也许有一份文档说GUID可以以数字开头,但并非所有情况下都是这样

->2020年的答案是:ID应该以字母开头,这样它们在任何地方都能可靠地工作——不管是CSS、JavaScript还是哪种浏览器


现在我只是在我的GUID前面加了一个G-。

遇到了一个问题,我不能使用GUID作为ID。如果GUID以字母开头,它就可以工作了。如果GUID以数字开头,它将不起作用。也许有一份文档说GUID可以以数字开头,但并非所有情况下都是这样

->2020年的答案是:ID应该以字母开头,这样它们在任何地方都能可靠地工作——不管是CSS、JavaScript还是哪种浏览器


现在我只是在我的guid前面加了一个G-。

CSS比HTML5更严格,请看链接的重复项。@这里的问题不是链接问题的重复项。无论是
.querySelector()
还是
.queryselectoral()
都不会出现在问题文本中,也不会出现在任何发布的答案中。链接的答案不适用于当前查询。@guest271314:这些方法适用于CSS选择器。因此,CSS规范应该涵盖这方面的规则(根据链接副本,不允许标识符以数字开头),不是两者都有,也不是非此即彼。html规范中的id值是有效的,但是css规范中的id值是无效的,因为querySelector*正确地使用了它,所以抛出了一个错误是的,我不认为我键入了我的意思#111是一个id选择器,按css规范,id选择器是#后跟一个css标识符。因此,作为id选择器,它是无效的,因为标识符不允许以数字开头。现在,[id=“111”]不是一个id选择器,而是一个属性选择器,它有一个附加条件:“属性值必须是CSS标识符或字符串”,因此选择器匹配的是字符串,而不是CSS标识符