当前位置:Gxlcms > html代码 > css样式除了用id选择器以外,可以唯一确定一个dom元素吗_html/css_WEB-ITnose

css样式除了用id选择器以外,可以唯一确定一个dom元素吗_html/css_WEB-ITnose

时间:2021-07-01 10:21:17 帮助过:6人阅读

正在做的功能,需要确定修改的目标,但是,并不是每一个dom元素都有id,所以卡在这里,在没有id的时候如何确定一个dom元素?


回复讨论(解决方案)

方法很多啊,根据条件来选择,如通过class属性,
比如遍历判断其他属性

楼主看看JQ的选择器用法就知道了,有很多形式。其实从本质上来讲,它的原理就象楼上说的是遍历元素并根据它的其它属性来进行判断,但比你自己写方便多了。

当然,也不建议仅仅是因为获取几个对象容易点就使用JQ。有空多看看它的功能,如果能让它在你的页面里发挥较多的作用,使用它的便利和代价之比就会更合适了。

我还忘说一点比较有用的了,就是通过和你要找的对象有关的其它容易找的对象来找你这个对象。呵呵,听来绕口,但其实很好理解,比如:


....
  • ...


假设你想找这里面的LI,没必要遍历所有的document内的元素对象,只要通过它的上级UL所在的上级DIV,因为它有ID名为theforever_csdn,找到它,再找它的UL子对象里的LI子对象就可以了。

这是通过父元素找子元素,类似的,还可以通过兄弟元素找兄弟元素,通过子元素找父元素。多看看DOM方法就行了。

我还忘说一点比较有用的了,就是通过和你要找的对象有关的其它容易找的对象来找你这个对象。呵呵,听来绕口,但其实很好理解,比如:


....
  • ...


假设你想找这里面的LI,没必要遍历所有的document内的元素对象,只要通过它的上级UL所在的上级DIV,因为它有ID名为thefore……
有人知道除了id,之外还能怎么唯一确定一个dom元素么?通过class和父级dom,都没办法。或者我没想到吧。

哎,郁闷呀,没办法唯一确定一个dom元素,通过class和上下级关系,都不能保证肯定是唯一的

哎,郁闷呀,没办法唯一确定一个dom元素,通过class和上下级关系,都不能保证肯定是唯一的

如果支持CSS3:
section:nth-child(1) {} /* 选择第一个

*/
section:nth-child(2) {} /* 选择第二个
*/
section:nth-child(N) {} /* 选择第N个
*/
section:nth-last-child(1) {} /* 选择最后一个
*/
section:nth-last-child(2) {} /* 选择倒数第二个
*/
section:nth-last-child(N) {} /* 选择倒数第N个
*/

第几个子元素都挨个定位得到,怎么就不能保证唯一了?这比用ID都更精准。因为ID其实是可以写同样的好几个的,当然,结果只会找到第一个,但如果你忘了前面写过,后面再写同样ID也不是不可能。

比较复杂,你是需要确定 dom元素 在dom文档树中的位置
而这个位置在 标记处就已经确定了
你可以完全的知道某个dom元素是同名dom元素的第几个,由此序号就可唯一的定位
当然对html的任何增删,都有可能造成这的序号的变动

正因为定位不是很方便,所以才出现了id选择器
所以在规划页面时,适当的设置些id是有利于后期工作的

ID,CLASS,或者节点下标,都可以啊

人气教程排行