js querySelector和getElementById通过id获取元素的区别

代码如下:

<!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> 


两个函数bySelector,byId分别通过querySelector和getElementById获取元素. 

页面上有id为“02E503E2A1C011CFC85B7B701A0677EC0900000000000001”的元素。 

结果:所有支持querySelector的浏览器中通过bySelector均获取不到(报错),但通过getElementById却可以获取。 

开始怀疑是id的字符串太长的原因导致querySelector获取不到。真正原因却是querySelector按css规范实现,即css标识符也不能以数字开头。 

W3 写道 
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".

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`document.getElementById` 和 `document.querySelector` 都是 JavaScript 中用于获取页面元素的方法,但它们有一些区别。 `document.getElementById` 是用于通过元素的唯一 ID 属性获取元素的方法。它接受一个参数,即要获取元素ID 值,并返回具有该 ID 的第一个匹配元素。示例: ```javascript var element = document.getElementById("myElement"); ``` 这个方法适用于只需要获取页面中具有特定 ID元素。 `document.querySelector` 是用于通过 CSS 选择器获取元素的方法。它接受一个参数,即要获取元素的 CSS 选择器,并返回第一个匹配该选择器的元素。示例: ```javascript var element = document.querySelector(".myClass"); ``` 这个方法更灵活,可以使用各种 CSS 选择器来获取元素,例如类名、标签名、属性等。如果有多个匹配的元素,它只返回第一个匹配的元素。 除了上述区别之外,还有一些其他的差异: - `document.getElementById` 是 DOM 元素对象的方法,只能在文档对象上调用。 - `document.querySelector` 是文档对象的方法,可以在整个文档中调用。 - `document.getElementById` 的返回值是一个 DOM 元素对象。 - `document.querySelector` 的返回值是一个匹配的元素对象,如果没有匹配的元素,则返回 null。 综上所述,`document.getElementById` 适用于通过元素ID 获取元素,而 `document.querySelector` 则更灵活,可以使用各种 CSS 选择器进行元素的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值