学堂 学堂 学堂公众号手机端

什么是元素选择器,基于JS的实现方法是什么

lewis 1年前 (2024-04-12) 阅读数 15 #技术
这篇文章主要讲解了“什么是元素选择器,基于JS的实现方法是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。


什么是元素选择器?

用过jquery的开发者都知道,jquery封装了对元素的查找功能,即通过jquery的api获取页面元素的过程,该过程只需提供一个元素选择的条件字符串即可获取相应的满足条件的页面元素。元素选择器即是指通过条件字符串获取相应元素的一个工具函数。

元素选择器分为id选择器、class选择器、标签选择器以及属性选择器。

id选择器即通过元素的id唯一标识获取元素。

类选择器即通过元素的class类获取元素列表。

标签选择器即通过元素的标签名获取元素列表。

属性选择器即通过元素的属性获取元素列表。

元素选择器的实现方法可以由javascript的document对象提供的方法来完成,document对象的关于元素获取的方法有

1、getElementById

2、getElementsByClassName

3、getElementsByTagName

当然还有其它的方法可以获取页面的元素,以上三个是比较常用的获取页面元素的方法。

一个简单的元素选择器实现

function node(selector) {
 if(selector.indexOf("#")==0) {
  var dom = document.getElementById(selector.substring(1));
  FE.extend("addClass",dom,addClass);
  FE.extend("removeClass",dom,removeClass);
  FE.extend("prevNode",dom,prevNode);
  FE.extend("value",dom,value);
  FE.extend("styleSettings",dom,styleSettings);
  FE.extend("nextNode",dom,nextNode);
  return dom;
 }else if(selector.indexOf(".")==0) {
  var doms = document.getElementsByClassName(selector.substring(1));
  var result = [];
  for(var i=0;i<doms.length;i++) {
  FE.extend("addClass",doms[i],addClass);
  FE.extend("removeClass",doms[i],removeClass);
  FE.extend("prevNode",doms[i],prevNode);
  FE.extend("value",doms[i],value);
  FE.extend("styleSettings",doms[i],styleSettings);
  FE.extend("nextNode",doms[i],nextNode);
  result.push(doms[i]);
  }
  return result;
 }else {
  var start = selector.indexOf("[");
  var end = selector.indexOf("]");
  var tagName = selector.substring(0,start);
  var attrStr = selector.substring(start+1,end);
  var attr = attrStr.split("=");
  
  var doms = document.getElementsByTagName(tagName);
  var result = [];
  for(var i=0;i<doms.length;i++) {
   var attrName = attr[0];
   var value = doms[i].getAttribute(attrName)
   if("'"+value+"'" == attr[1]) {
  FE.extend("addClass",doms[i],addClass);
  FE.extend("removeClass",doms[i],removeClass);
  FE.extend("prevNode",doms[i],prevNode);
  FE.extend("value",doms[i],value);
  FE.extend("styleSettings",doms[i],styleSettings);
  FE.extend("nextNode",doms[i],nextNode);
  result.push(doms[i]);
   }
  }
  return result;
 }
}

元素选择器实现总结

简单来说元素选择器实现了对元素获取方法的封装,每次获取页面元素时都不需要再次使用document对象提供的方法,只需使用工具函数node即可获取页面元素中满足selector条件字符串的元素,由于页面元素还具有其它的共同特性,比如修改元素的class属性的方法addClass、removeClass,修改和获取style属性的方法styleSettings,修改和获取元素属性的方法value,以及获取当前元素的上一个元素和下一个元素的方法prevNode、nextNode等。

这些方法可以通过一个扩展对象的类方法extend绑定到相应的元素上,不需要再次调用或者写相应的代码去获取或者修改,extend类方法允许扩展任意对象的任意属性,在javascript中一切变量都可以看作一个对象,除了简单的基本类型的变量外,我们可以使用像这样的代码来获取和修改对象的属性

var o = {name:"fe_spiderman",username:"路爷交欢"}

/*通过对象引用方式获取对象的属性*/
o.name

/*通过键值对的方式获取对象的属性*/
o[“name”]

javascript的这种支持极大的丰富了对象的可扩展性,想象一下不用去继承和封装相应的接口来维护代码的可读性带来的乐趣。


感谢各位的阅读,以上就是“什么是元素选择器,基于JS的实现方法是什么”的内容了,经过本文的学习后,相信大家对什么是元素选择器,基于JS的实现方法是什么都有更深刻的体会了吧。这里是博信,小编将为大家推送更多相关知识点的文章,欢迎关注!
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门