自己动手实现getElementsByClassName

看了一句话,我们都是搬运工,github的搬运工,下面这代码搬运来自各个地方,最后成型。

var classCache = {};
function getElementsByClassName(cls, root,
tag){
var elems, classRE,
rs = [];
root = root ||
document;
tag = tag || ‘*‘;
elems =
root.getElementsByTagName(tag);
//去掉字符串前后空格
cls =
cls.replace(/^\s+|\s+$/g, ‘‘).split(/\s+/g);
cls =
cls.join(‘\\s+[\\S]*\\s*‘);

classRE = classCache[cls] || new
RegExp(‘(^|\\s+)‘ + cls + ‘(\\s+|$)‘);
for(var i = 0, len = elems.length; i
< len; i++){
classRE.test(elems[i].className) &&
rs.push(elems[i]);
}
return rs;
}

时间: 2025-01-04 16:37:46

自己动手实现getElementsByClassName的相关文章

Android自动手绘,圆你儿时画家梦!

我的简书同步发布:Android自动手绘,圆你儿时画家梦! 从小就喜欢到处乱画,家里一米以下墙上就没有一块干净的地方(那是老房子啦~)~~(⊙﹏⊙)b.好了,废话不多说,进入主题.今天主要跟大家分享一下如何将一张图片转成手绘效果,并模拟画家动态绘制.先把最终效果图亮出来,觉得好的请点个赞,您的点赞是对我的最大鼓励(O(∩_∩)O哈哈~). 效果图如下: 再来张截图: 心动有木有! 原理 大概介绍一下实现原理.首先你得有一张图(废话~),接下来就是把这张图的轮廓提取出来,轮廓提取算法有很多,本人不

动手动脑 自信成就人生之课后作业

?动手动脑一 请看以下代码: 上述代码可以顺利通过编译,并且输出一个“很奇怪”的结果: Ljava.lang.Object;@ba8a1dc 为什么会这样? 解释:java的object数组不能转化成string数组,在转换出错时,首先要观察被转换的对象原来是什么类型,或解开多层的包装,直到获取对象的最终类型,然后把不能再分解的类型转换成自己目标类型的对象...(稍微能理解) ?动手动脑二 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中.

C++基础之三大特性之继承的本质(要当就当富二代,否则自己动手才能丰衣足食)

继承,正如字面意思可以理解,拿到财产,不过不是先人故去的时候才能拿到,在写这篇博文前看了会书,快看的睡着了就直接动手写吧,感觉看书没有什么收获,果然实践才是出真知 继承 继承的方式:private(默认).public.protect(区别:子类中能不能用到,子类对象可不可以访问的到,一般我用的public,其他的用不到,我不再这赘述,有需求百度就可以了) 继承后的结果:1.得到父类的财产(变量,不论是公有私有还是保护的):2.访问到父类的所有(变量和函数)----说的是public继承方式,其

Cocos2d-x 动手实现游戏主循环

由于Cocos2d-x封装的很好,所以对于很多新手,他们只知道先new一个场景,在场景上添加布景或精灵,然后用Director的runWithScene便可以运行游戏了.如果给一个精灵加个动作,精灵就会动,如果给布景层添加个定时器,游戏会定时执行.你知道为什么会这样吗? 作为一个游戏开发者,我觉得进入游戏这一行业之前,一定要先搞清楚"游戏主循环"这个东东,可惜我到现在才来研究这个东东.或许网上关于Cocos2d-x游戏主循环的讲解一大把,但是这篇文章,我会教你怎么来实现游戏主循环. 一

【原创】连“霍金”都想学习的“人工智能”---【自己动手写神经网络】小白入门连载开始了(1)

欢迎关注[自己动手写神经网络]的博客连载!!! 第1章 神经网络简介 神经网络这个词,相信大家都不陌生.就在你打开本书,并试图了解神经网络时,你已经在使用一个世界上最复杂的神经网络——你的大脑,一个由大约1000亿个神经元(每个单元拥有约1万个连接)构成的复杂系统.但人的大脑太过复杂,以至于科学家们到目前为止仍然无法准确解释大脑的工作原理和方式.但有幸的是,生物神经网络的最最基本的元素已经能够被识别,而这就构成了本书想为你介绍的人工神经网络(Artificial Neural Network).

自己动手做聊天机器人教程

自己动手做聊天机器人 一-涉及知识(2016-06-09) 自己动手做聊天机器人 二-初识NLTK库(2016-06-10) 自己动手做聊天机器人 三-语料与词汇资源(2016-06-12) 自己动手做聊天机器人 四-何须动手?完全自动化对语料做词性标注(2016-06-17) 自己动手做聊天机器人 五-自然语言处理中的文本分类(2016-06-21) 自己动手做聊天机器人 六-教你怎么从一句话里提取出十句话的信息(2016-06-22) 自己动手做聊天机器人 七-文法分析还是基于特征好啊(20

关于getElementsByTagName与getElementsByClassName的那些事

很久以来我获取dom节点的方式都是getElementById,queryselector,queryselectorAll这三个为核心,一直认为有些API并没那么好用而选择弃用,直到后来...看到了关于getElementsByTagName的一个特性-动态,直接刷新了我对这个API的认知(果然基础还是不扎实啊 - -~~~~~~~~~),于是就把所有获取节点的API都试了个遍,最后发现只有getElementsByTagName,getElementsByClassName这两个API存在这

java09动手动脑

一.动手动脑 运行AboutException.java示例 1)源代码 import javax.swing.*; class AboutException { public static void main(String[] a) { double i=-1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); }

JAVA09异常处理之动手动脑问题

动手动脑1:为什么不管是否有异常发生,finally语句块中的语句始终保证被执行? 我们在写代码时,如果finally块中的代码过多会导致字节码条数"膨胀",因为finally中的字节码会被"复制"到try块和所有的catch块中.finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行. 动手动脑2:CatchWho.java,写出程序运行结果: ArrayIndexOutOfBoundsException/内层try-ca