鑑於111是一個有效的HTML id屬性還是document.querySelector()和document.querySelectorAll()正確地引發語法錯誤?
const div = document.createElement("div");
div.id = 111;
document.body.appendChild(div);
try {
console.log(document.querySelector("#111"));
} catch(e) {
console.error(e);
/*
Chromium:
DOMException: Failed to execute 'querySelector' on 'Document':
'#111' is not a valid selector.
Firefox
SyntaxError: '#111' is not a valid selector
*/
}
try {
console.log(document.querySelectorAll("#111"));
} catch(e) {
console.error(e);
/*
Chromium:
DOMException: Failed to execute 'querySelector' on 'Document':
'#111' is not a valid selector.
Firefox
SyntaxError: '#111' is not a valid selector
*/
}
然而,document.getElementById()
返回元素
const div = document.createElement("div");
div.id = 111;
document.body.appendChild(div);
try {
console.log(document.getElementById("111"));
} catch(e) {
console.error(e);
}
參考文獻:
ID和NAME令牌必須以字母開頭([A-ZA-Z])和之後可以是任何數量的字母,數字([0-9]) ,連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。
7.5.2 Element identifiers: the id and class attributes
屬性定義
ID =名[CS]該屬性分配一個名稱的元素。該名稱 在文檔中必須是唯一的。
儘管本說明書定義了類,ID,和槽的任何元件上 屬性的要求,它沒有如權利要求所給 是否使用它們是符合與否。
id屬性指定其元素的unique identifier (ID)。
身份證可以採取何種形式沒有其他限制;在 具體地,ID可以包括只是數字,以數字開頭,以下劃線開頭 ,由剛標點符號等
拋出異常SYNTAX_ERR如果指定的組的選擇器是 無效。
拋出異常SYNTAX_ERR如果指定的選擇符的組是 無效。
是"111"
有效的HTML id屬性或者document.querySelector()
和document.querySelectorAll()
正確拋出語法錯誤?
可能重複[什麼是HTML中的id屬性的有效值?](https://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in- html) – Thilo
CSS比HTML5更嚴格,請參閱鏈接的副本。 – Thilo
ID和名稱標記必須以字母([A-Za-z])開頭,後面可以跟隨任意數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」 ),冒號(「:」)和句點(「。」)。正如你所看到的規則,把它改爲以字母開頭,而不是以數字開頭,然後試試 – Thennarasan