getElementsByClassName 原生实现

getelementsbyclassname:自动从code.google.compgetelementsbyclassname导出 getelementsbyclassname 自动从code.google.com/p/getelementsbyclassname导出 此代码是根据 立即下载

DOM 提供了一个名为 getElementById() 的方法,这个方法将返回一个对象,这个对象就是参数 id 所对应的元素节点。另外,getElementByTagName() 方法会返回一个对象的数组,每一个对象分别对应着文档里有给定标签的一个元素。这个方法的参数是 html 标签的名字。现在我们考虑一个问题,能不能通过标签的类名class name来获取该对象呢?下面是这个猜想的程序实现(支持多个class查询和在某个范围内进行查询):

	/* 
	* 根据元素clsssName得到元素集合 
	* @param fatherId 父元素的ID,默认为document 
	* @tagName 子元素的标签名 
	* @className 用空格分开的className字符串 
	*/
	function getElementsByClassName(className,tagName,fatherId){ 
		/*
		* node = fatherId&&document.getElementById(fatherId)||document;
		* 这句代码可以拆成两部分来看 
		* fatherId&&document.getElementById(fatherId) 如果fatherID为false则直接返回false、如果fathreId为true则执行docu~~~并返回结果
		* (前半部分的结果)||document 如果前半部分的结果为true则直接返回、否则返回document
		* 整句话其实类似三元操作符
		*/
		node = fatherId&&document.getElementById(fatherId)||document; 
		tagName = tagName || "*"; 
		className = className.split(" "); 
		var classNameLength = className.length; 
		for(var i=0,j=classNameLength;i<j;i++){ 
			//创建匹配类名的正则 
			className[i]= new RegExp("(^|\\s)" + className[i].replace(/\-/g, "\\-") + "(\\s|$)"); 
		} 
		var elements = node.getElementsByTagName(tagName); 	//得到指定标签集合
		var result = []; 
		for(var i=0,j=elements.length,k=0;i<j;i++){//缓存length属性 
			var element = elements[i]; 
			while(className[k++].test(element.className)){//优化循环 
				if(k === classNameLength){ 
					result[result.length] = element; 
					break; 
				}   
			} 
			k = 0; 
		}
		return result;
	}


 

Test:

<div id="container"> 
	<span class="aaa zzz ccc"></span> 
	<div class="aaa bbb ccc"></div> 
</div> 
<div class="aaa bbb ccc"></div> 
window.onload = function(){ 
	alert(getElementsByClassName("aaa ccc","div").length);//2 
	alert(getElementsByClassName("aaa ccc","div","container").length);//1 
	alert(getElementsByClassName("aaa zzz","span","container").length);//1 
}



 

DP链路训练从HPD触发到通道对齐:原理与调试实战 高速数字接口的稳定工作依赖物理层信号的精确协商,链路训练正是DisplayPort接口中确保源端与接收端在速率、摆幅和时序上达成一致的关键机制。HPD作为链路状态变化的触发信号,与通道对齐一同构成了训练流程的首尾环节。理解从时钟恢复到均衡再到多通道对齐的完整过程,有助于快速定位显示异常问题。在工程实践中,借助DPCD寄存器交互和AUX通道日志,可以系统性地排查训练失败原因。围绕链路训练全流程进行剖析,重点探讨HPD触发机制、训练图案选择、寄存器配置以及链路降级策略,为显示方案开发与调试提供工程参考。 阅读详情

相关推荐

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

getElementsByClassName

HTML5 DOM中新增了一个令人期待已久的方法:getElementsByClassName。这个方法能让我们通过class属性中的类名来访问元素,不过由于这个方法还比较新,某些DOM实现里可能还没有,所以使用的时候要当心。 getElementsByClassName方法非常有用,但只有较新的浏览器才支持它,为了弥补这一不足,DOM脚本程序员需要使用已有的DOM方法来实现自己的getElem...

weixin_30747253的博客 184

postman响应体:“msg“: “请求缺失签名Sign“、 “msg“: “请求缺失时间戳“

请求标头有Sign、Timestamp,但是直接将网址复制到postman时,Headers没有自动生成这两个参数,所以运行时会报错。

m0_46862648的博客 1706

Android通过getElementsByClassName快速隐藏WebView标题和广告

近日,在把某网站用WebView加载到App里面的时候,出现的一个问题。看下图 简直了~带着标题还有广告,简直太糟糕了.而且占屏幕的空间都太大了,很不协调…. 所以我们要将他们所在的div隐藏掉,首先我想到的是让服务器的哥们重新定制一个页面来显示,但是…坑的是他们不管…呜呜呜~~~ 俗话说,靠人不如靠己,咱们自己来!! 首先让我们看看加载网页的代码: private We

WatermelonPeel的博客 1404

基于CANoe的Basic Diagnostics ECU (UDS)

基于CANoe的Basic Diagnostics ECU (UDS)

farmer00的博客 9152

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

关于IE中getElementsByClassName不能用的问题

IE6、8中不支持getElementsByClassName这种方法

每天多懂一点点 1419

JSP期末考试复习习题及答案

以下习题是对于平时课堂小测的整理,如有错误敬请指正! 欢迎一起交流~ 预祝各位小伙伴们考试顺利! Test1 一. 单选题 – 1.(单选题)当用户请求jsp页面时,JSP引擎就会执行该页面的字节码文件响应客户的请求,执行字节码文件的结果是() A. 发送一个JSP源文件到客户端 B. 发送一个Java文件到客户端 C. 发送一个HTML页面到客户端 D. 什么都不做 – 2.(单选题)下列动态网页和静态网页的根本区别描述错误的是( D) A. 静态网页服务器端返回的HTML文件是事先存储好的 B. 动.

技术小白 2万+

JavaScript getElementsByClassName()方法介绍

根据元素的class属性值查询一组元素节点对象 getElementsByClassName()可以根据class属性值获取一组元素节点对象,但是该方法不支持IE8及以下的浏览器 注意:这个方法会给我们返回一个类数组对象,所有查询到的元素都会封装到对象中,如下图: 我们若要查找具体元素,就必须使用索引,如下图: 我们可以通过length属性,获取其长度,如下图: 我们可以通过innerHT...

路虽远,行则必至! 2万+

Python实战:5分钟搞定VCF文件中每个样本的SNP统计(附bcftools安装指南)

本文介绍了三种高效统计VCF文件中每个样本SNP数量的Python方法,包括原生解析、结合bcftools的推荐方案以及使用PyVCF3专业库。特别推荐bcftools结合Python的方法,适用于中大型VCF文件,显著提升处理效率。文章还提供了bcftools安装指南和进阶统计技巧,帮助生物信息学分析人员快速完成SNP统计任务。

weixin_30555125的博客 493

成本中心(CO)和利润中心(PCA)是管理会计模块的核心组件

SAP中成本中心(CO)和利润中心(PCA)凭证处理存在差异:①外部交易(如费用支付、销售)会生成FI借贷凭证;②内部成本分摊和转移仅产生CO/PCA管理凭证,通过次级成本要素或利润中心转移科目记录,不涉及FI模块。核心区别在于是否涉及企业实际收支:实际收支触发FI凭证,内部核算仅生成管理会计凭证。系统通过这种机制实现财务会计与管理会计的集成与分离。

金牌架构师 1127

js原生实现getElementsByClassName()

前言:document.getElementsByClassName这个方法只能在ie8以上的浏览器使用,也就是说getElementsByClassName是在支持html5的浏览器下才能执行。 为了让ie9以下的浏览器能够支持这个方法于是自己写了个getElementsByClassName脚本方法让浏览器也能够像jquery那样拿到Class就能获取对象。 function getE...

Haley_Guo的博客 3353

Lion优化器试验笔记

Lion优化器试验笔记

jacke121的专栏 845

getElementsByClassName的原生实现

DOM 提供了一个名为 getElementById() 的方法,这个方法将返回一个对象,这个对象就是参数 id 所对应的元素节点。另外,getElementByTagName() 方法会返回一个对象的数组,每一个对象分别对应着文档里有给定标签的一个元素。这个方法的参数是 html 标签的名字。现在我们考虑一个问题,能不能通过标签的类名class name来获取该对象呢?下面是这个猜想的程序...

lzhw1985的专栏 186

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

js原生实现getElementsByClassName

document.getElementsByClassName = function(name){ try{ var tag = document.getElementsByTagName("*") || document.all; var array = []; for (var i = 0; i < tag.l...

weixin_30273501的博客 160

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

原生JS实现元素的getElementsByClassName()方法,适用于多个类名

原生JS实现getElementsByClassName() window.onload = function() { var oUl = document.getElementById('ull'); function getElementsByClassName(obj,classname){ var result = []; var aEls = document.getEl

JMission的专栏 7950

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

实现getElementsByClassName

var getElementsByClassName = function (searchClass, node,tag) { if(document.getElementsByClassName){ //原生 var nodes = (node || document).getElementsByClassName(searchClass),result = []; ...

weixin_30879833的博客 137

小白必看-------原生JS解决getElementsByClassName兼容问题

原生JS解决getElementsByClassName兼容问题 //通过自定义函数实现获取类名(不适合多个类名) function getElementsByClassName(node,classname){ if(node.getElementsByClassName){ return node.getElementsByClassName(classname); }...

qq_31232201的博客 444

getElementsByClassName()获取元素后onclick事件无效解决办法

问题描述 今天使用源生js实现 点击按钮关闭对应div功能(有多个按钮,相同class名),出现onclick无效情况。 问题原因 使用getElementById获取元素的结果是:当前元素 使用getElementsByClassName获取元素的结果是:相同class名元素数组。 解决办法 var div = document.getElementById("div"); console.log("getElementById: "); console.log(div);

段占彪的博客 9480

原生JS解决getElementsByClassName浏览器兼容问题(适用于多个类名)

//getElementsByClassName兼容问题解决 var getElementsByClassName = function(classname) { //如果浏览器支持getElementsByClassName,使用现有方法 if(document.getElementsByClassName) { return document.getElement

urnotzane的博客 1579

getElementsByClassName兼容低版本浏览器

var getElementsByClassName = function (searchClass, node,tag) { if(document.getElementsByClassName){ var nodes = (node || document).getElementsByClassName(searchClass),result = ...

acugck6042的博客 90

解决 IE 不支持 document.getElementsByClassName() 的方法

网页错误详细信息 消息: 对象不支持此属性或方法 document.getElementsByClassName('element_name') //create method getElementsByClassName for document if(!document.getElementsByClassName){ document.getElementsByC

wugewuge的专栏 1万+

根据原生JS封装函数,根据传递的选择器查找对应的元素以及解决getElementsByClassName() 兼容问题

功能:1..根据原生JS封装函数,根据传递的选择器查找对应的元素    2.解决getElementsByClassName() 兼容问题    3.查找 value 在 array 数组中第一次出现的位置 代码实现: // 根据传递的选择器查找对应的元素 // 参数: // selector: 选择器,字符串,可以取 #id 、.className、tagName // conte

Qianqianliuliu的博客 1335

getElementsByClassName方法

网上找的getElementsByClassName方法 function getElementsByClassName(n) { var el = [], _el = document.getElementsByTagName('*'); for (var i=0; i<_el.length; i++ ) { if (_el[i].classNa...

183

我的getElementsByClassName实现

先来看一下代码:(支持多个class查询和在某个范围内进行查询) 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 28 29 /*  * 根据元素clsssName得到元素集合  * @param fatherId

WHACKW的专栏 1260

自己动手实现getElementsByClassName()行为

摘录一个Js实现getElementsByClassName()的程序: function getElementsByClassName(className){ var elements = []; if(!document.getElementsByClassName){ var domNodes = document.getEl...

189
上一篇: JS的正则表达式
下一篇: JS获取节点的兄弟,父级,子级元素
kerwin612
博客等级 码龄14年 28粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值