js querySelector和getElementById通過(guò)id獲取元素的區(qū)別
這是sina同事xiaoniu發(fā)現(xiàn)的,如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<div id="02E503E2A1C011CFC85B7B701A0677EC0900000000000001"></div>
<script>
var str = '02E503E2A1C011CFC85B7B701A0677EC0900000000000001';
function bySelector(id) {
return document.querySelector('#'+id);
}
function byId(id) {
return document.getElementById(id);
}
alert(bySelector(str));
alert(byId(str));
</script>
</body>
</html>
兩個(gè)函數(shù)bySelector,byId分別通過(guò)querySelector和getElementById獲取元素.
頁(yè)面上有id為“02E503E2A1C011CFC85B7B701A0677EC0900000000000001”的元素。
結(jié)果:所有支持querySelector的瀏覽器中通過(guò)bySelector均獲取不到(報(bào)錯(cuò)),但通過(guò)getElementById卻可以獲取。
開(kāi)始懷疑是id的字符串太長(zhǎng)的原因?qū)е聁uerySelector獲取不到。真正原因卻是querySelector按css規(guī)范實(shí)現(xiàn),即css標(biāo)識(shí)符也不能以數(shù)字開(kāi)頭。
W3 寫(xiě)道
In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, two hyphens, or a hyphen followed by a digit. Identifiers can also contain escaped characters and any ISO 10646 character as a numeric code (see next item). For instance, the identifier "B&W?" may be written as "B\&W\?" or "B\26 W\3F".
- js中document.getElementById(id)的具體用法
- javascript typeof id===''string''?document.getElementById(id):id解釋
- 原生js操作checkbox用document.getElementById實(shí)現(xiàn)
- getElementByIdx_x js自定義getElementById函數(shù)
- js中document.getElementByid、document.all和document.layers區(qū)分介紹
- JavaScript中也使用$美元符號(hào)來(lái)代替document.getElementById
- javascript代碼在ie8里報(bào)錯(cuò) document.getElementById(...) 為空或不是對(duì)象的解決方法
- javascript getElementById 使用方法及用法
- js中的getElementById的使用方法
相關(guān)文章
如何在TypeScript使用模塊化以及注意事項(xiàng)詳解
在TypeScript中就像在EC5中一樣,任何包含頂級(jí)import或export的文件都被認(rèn)為是一個(gè)模塊,下面這篇文章主要給大家介紹了關(guān)于如何在TypeScript使用模塊化以及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2022-10-10
js中document.write使用過(guò)程中的一點(diǎn)疑問(wèn)解答
本文為大家介紹下為何如果在頁(yè)面加載完后如果調(diào)用document.write就會(huì)覆蓋整個(gè)文檔2014-03-03
小程序?qū)崿F(xiàn)發(fā)表評(píng)論功能
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)發(fā)表評(píng)論功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07

