markdown JS:数字开头选择名问题浅析.MD
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown JS:数字开头选择名问题浅析.MD相关的知识,希望对你有一定的参考价值。
### 前言
朋友问起我一些关于怎么查找节点的问题,我下意识就给他推荐了`querySelector`[`All`],并自鸣得意地说,灵活方便,堪比jq的选择器查找,(在我看来也确实如此):flushed:。
没错多久就出问题了,光速打脸:pensive:
![image](https://user-images.githubusercontent.com/25907273/34355060-9dcfbb18-ea6d-11e7-816b-e135c0960dbd.png)
虽然他的id名起得也是很迷人:sweat_smile:。
----
### 问题是什么?
他跟我说,出问题部分元素是动态插入的,静态的就没有问题,其实不是,就算是静态的元素也会出问题
![image](https://user-images.githubusercontent.com/25907273/34355526-f04df1e0-ea70-11e7-95f0-ce9628ce690a.png)
最开始我以为是`querySelector`本身的问题,因此专门去[JS BIN](http://jsbin.com/)试了一下,如下:
```javascript
var div = document.createElement('div');
div.id = "coder";
div.textContent = "issac_宝华";
document.body.appendChild(div);
var idName = document.querySelector("#coder").id;
console.log(idName);
```
![image](https://user-images.githubusercontent.com/25907273/34354894-7e364d68-ea6c-11e7-9922-74f7565b4b14.png)
不论我是用`createElement`和`innerHTML`都是没有问题。我质疑说,是不是你id名写错了。然后继续打脸:scream:,而且就算是id名写错的也不会报错,最多就是返回个空,一脸懵逼,难道真的不行。
据他说,用我推荐的`querySelector`会有问题,但是用他自己代码的`getElementById`就没有问题,还有那么邪门:zap:
难道是id名的问题?!我直接叫他复制id名给我试试。
如果有人认为是兼容性的问题,那就大可放心了:
[Can I Use querySelector/querySelectorAll ?](https://caniuse.com/#search=querySelector)
----
### 测试
马蛋:new_moon_with_face:,竟然还真是……
![image](https://user-images.githubusercontent.com/25907273/34355152-42f63bd0-ea6e-11e7-90a4-56a72a15c4c9.png)
过分了,过分了,不会是因为id名太长吧!测试了,不是的
![image](https://user-images.githubusercontent.com/25907273/34355199-81141c70-ea6e-11e7-9ded-7f4bf7a7bc67.png)
变态到这样也是没有问题的,测试到这里也该看出端倪了,
**是不是因为数字开头!**
别说,还真是……
![image](https://user-images.githubusercontent.com/25907273/34355237-c8d97f00-ea6e-11e7-8aec-8c9d5e24e97a.png)
最神奇的是,用`getElementById`就算使用数字开头的名字也是没有问题的,**Orz**
![image](https://user-images.githubusercontent.com/25907273/34355328-60d98796-ea6f-11e7-92d5-5303439b52d8.png)
爽到没有:joy:!
----
### 最后
就算是`getElementById`有更强的容错,但是我还是会继续用`querySelector`,毕竟那么生儿为人20几年没有试过用过如此怪异的selector name。:eyes:
以上是关于markdown JS:数字开头选择名问题浅析.MD的主要内容,如果未能解决你的问题,请参考以下文章
常用js正则表达式
常用js正则表达式大全
JAVA类名与方法名以数字开头的问题
01-JS语法
什么双下划线的意思是在C语言中的变量名
Js正则校验