JavaScript 通过“类”来查找元素

今天写了一个很简单、很粗暴的通过JS根据类来查找DOM元素。

为了降低它的粗暴等级(耗费性能)我给了三个等级。

首先性能最好的,适合FF,CH,IE8,通过querySelectorAll这个API。

其次是指定一个父级的ID。

最后只能全页面进行匹配!

因为水平有限,目前也只能写成这种,真的好好奇JQ的选择器是怎么去匹配DOM的,如果有大神看到这篇文章,请不要吝啬施教。。。

下面贴代码:

 1     function $(name,id){
 2
 3         // BUG Handle
 4         try{
 5             if(!Boolean(name) || /^\s*$/.test(name)){
 6                 throw new Error(‘object not is empty or null‘);
 7             }
 8         }catch(e){
 9             alert(e);
10             return false;
11         }
12
13         var elems=[],
14             reg = new RegExp(‘\\b‘+ name +‘\\b‘),
15             idx = 0;
16
17         if(document.querySelectorAll){
18             elems = document.querySelectorAll(‘.‘+name);
19         }else if(id){
20             var childElements = document.getElementById(id).getElementsByTagName(‘*‘);
21             for(var i=0;i<childElements.length;i++){
22                 if(reg.test(childElements[i].className)){
23                     elems.push(childElements[i]);
24                 }
25             }
26         }else{
27             var allElements = document.getElementsByTagName(‘*‘);
28             for(var i=0;i<allElements.length;i++){
29
30                 if(reg.test(allElements[i].className)){
31                     elems[idx] = allElements[i];
32                     idx++;
33                 }
34             }
35
36         }
37
38         if(elems.length==1){
39             return elems[0]
40         }else{
41             return elems;
42         }
43     }
44
45 // 调用方法: $(className[,parentID])
时间: 2024-08-06 11:57:11

JavaScript 通过“类”来查找元素的相关文章

封装查找元素以及集成日志输出,Base模块

关于查找元素封装,Base模块 """ Selenium 封装基类 封装查找元素以及集成日志输出 """ from HTMLReport import logger from selenium import webdriver from selenium.webdriver.remote.webelement import WebElement class Base(object): def __init__(self, driver: webd

javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式

原文:javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式 一.背景:一个表单中,要修改一些li中有class=box的样式,将它的background设置为red红色.一般的做法是我们可以先找到父级元素 ,然后由父级元素找到所有相关tagName,最后,来一个if判断,如果class属性为box,则修改之 var oUl = document.getElementById("ul1");                          

JavaScript之查找元素

在IE6还大行其道的时候,原生JS操作DOM有各种各样的问题,jQuery应运而生,它解决了人们的痛点,对各种浏览器及其各种版本的兼容是相当的赞,而且易上手(不包括jQuery2.0),但他毕竟是库,性能上面还是弱于原生的.如今许多公司已经放弃兼容IE6和7甚至8,所以原生JS操作DOM可以搬上台面了,尤其是原生在查找元素方面的扩展可以让你不在依赖jQuery,下面详说原生查找元素最基本的三个document.getElementById()接受一个参数:要取得的元素的ID,查找到则返回该元素,

JavaScript 查找元素

JavaScript 查找元素 查询单个元素document.getElementById 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <!DOCTYPE html> <html>     <head>         <title>访问元素</title>         <meta charset="UTF-8"

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.:

CSS3伪类和伪元素的特性和区别

本文转自:http://www.cnblogs.com/ihardcoder/p/5294927.html 今天复习css时发现::的css选择器,查了一下,知道有伪元素和伪类这件事,他们的区别是什么呢?很幸运已经有人总结好了! CSS3伪类和伪元素的特性和区别 前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其实上面提到的这些伪类和伪元素都是CSS1和CS

关于css中伪类及伪元素的总结

css中的伪类和伪元素总是混淆,今天参考了很多资料,也查看了部分文档,现将伪类及伪元素总结如下: 一.由来: 伪类和伪元素的引入都是因为在文档树里有些信息无法被充分描述,比如CSS没有“段落的第一行”.“文章首字母”之类的选择器,而这在一些出版场景里又是必须的,这一情况下出现的.引用标准中的话: CSS introduces the concepts of pseudo-elements and pseudo-classes to permit formatting based on infor

JavaScript获取DOM节点HTML元素CSS样式

JavaScript获取DOM节点HTML元素CSS样式技术 maybe yes 发表于2015-01-10 18:07 原文链接 : http://blog.lmlphp.com/archives/59  来自 : LMLPHP后院 如何使用 JavaScript 获取某个 DOM 节点下 HTML 元素的 CSS 样式值?使用过 JQuery 的童鞋一定都非常的熟悉,Jquery 提供了非常强大的 CSS 方法,可以很方便的设置和获取元素的 style 属性. 某些情况下,我们不能使用 JQ

方格拼图游戏2(javascript以类的形式实现)+增加批量移动

今天又在原来的基础上,增加了新的功能:当空白方格A 与 鼠标点击的方格 B在同一行,或者同一列,而且当他们不是紧挨着的情况,自动将B到A间的方格们,顺次移动填补空白方格. var game ={ wid_num:3, cotainerid:"game_cotainer", init:function(_num){ console.log('init'); game.wid_num = _num || 3; console.log( game.wid_num ); var max_num