平时写HTML时多用class来命名,为很少用id来命名,主要原因就是class使用起来比较灵活。

但是万恶的JS在操作DOM的时候对ie6+只提供了getElementById和getElementsByTagName两个方法来查找DOM。

这时候就很尴尬了,就不得不在HTML里加入各种各样的id。看了就烦,不爽

Js有提供一个通过class名查找DOM的方法:getElementsByClassName();

但是。。。。。。只支持ie9+   -.-,哎呀好尴尬。。。

只好自己写一个兼容IE的getElementsByClassName()方法出来:

 // indexOf兼容
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(x) {
var result = -1;
if (this.length == 0) {
return result;
}
for (var i = 0; i < this.length; i++) {
if (this[i] === x) {
result = i;
break;
}
}
return result;
}
}
// getElementsByClassName兼容
if (!document.getElementsByClassName) {
document.getElementsByClassName = function(c_name, ele) {
//用于输出找到的匹配的DOM元素
var arr = [];
// 查找元素,并计算数组长度
var allTag = (ele || document).getElementsByTagName('*');
var tagLength = allTag.length;
// 对传进来的c_name参数进行分割,并计算数组长度
var cNameList = c_name.split(' ');
var cNameLength = cNameList.length;
// 对所有的tag元素进行遍历
for (var i = 0; i < tagLength; i++) {
// 对每一个tag的class属性进行分割,并计算数组长度
var classList = allTag[i].className.split(' ');
var listLength = classList.length;
// 定义一个空数组
var judge = [];
for (var t = 0; t < cNameLength; t++) {
// 如果cNamelist可以在classList中找到,就给judge push一个true
if (classList.indexOf(cNameList[t]) !== -1) {
judge.push(true);
}
}
// 判断judge是否相等cNameLength,如果相等,表示是我们需要的元素
if (judge.length === cNameLength) {
arr.push(allTag[i]);
}
}
return arr;
}
}
 <div id="box">
<div class="one two"></div>
<div class="one three"></div>
<div class="one"></div>
<div class="one"></div>
</div>
<div class="one"></div>
<div class="one"></div>

这个兼容代码可以实现:

1. document.getElementsByClassName("one two");

  只找到<div class="one two"></div>

2. document.getElementsByClassName("one");

  找到所有div中存在class名为one的元素

3.document.getElementsByClassName("one",document.getElementById("box"));

  找到box下的所有存在class名为one的元素

DOM getElementsByClassName IE兼容方案的更多相关文章

  1. js中getBoundingClientRect的作用及兼容方案

    js中getBoundingClientRect的作用及兼容方案 1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位 ...

  2. 让IE8支持HTML5及canvas功能!chart.js图表绘制工具库IE8上兼容方案

    第一步,我们加上对html5的支持. <!--[if IE]> <script src="/public/html5.js" type="text/ja ...

  3. Emoji表情符号兼容方案(适用ios,android,wp等平台)

    http://blog.csdn.net/qdkfriend/article/details/7576524 Emoji表情符号兼容方案 一 什么是Emoji emoji就是表情符号:词义来自日语(え ...

  4. Drawable 着色的后向兼容方案

    看到 Android Weekly 最新一期有一篇文章:Tinting drawables,使用 ColorFilter 手动打造了一个TintBitmapDrawable,之前也看到有些文章使用这种 ...

  5. [ios2]Emoji表情符号兼容方案 【转】

    Emoji表情符号兼容方案 一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji ...

  6. localStorage兼容方案

    localStorage是H5的存储方案,各大浏览器支持都相当不错,唯一悲催的就是IE,这个浏览器界的另类总是显得格格不入. IE “Internet选项”->“安全”中有一个“启动保护模式”的 ...

  7. 最新CSS兼容方案

    CSS兼容方案,让你的样式完美兼容各大浏览器,这个方案主要是用来解决Safari的,Opear是在测试的时候顺带试了一下,结果发现竟然也行,所以顺便也解决了. .e {/*FF OP*/ color: ...

  8. Emoji表情符号兼容方案

    Emoji表情符号兼容方案 一 什么是Emoji    emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. em ...

  9. 移动端 ios 长按复制兼容方案

    移动端页面,需要复制一段文字码. 在ios中,长按文字区域,默认选中的范围,超出了我长按的文字区域, 把上面的图片和下面的另一个div的文字也给我包含进来了,并不是我想要的! 举个例子: 如下图: 1 ...

随机推荐

  1. 高性能Javascript--脚本的无阻塞加载策略

    Javascript在浏览器中的性能,可以说是前端开发者所要面对的最重要的可用性问题. 在Yahoo的Yslow23条规则当中,其中一条是将JS放在底部 .原因是,事实上,大多数浏览器使用单进程处理U ...

  2. nodejs进阶(2)—函数模块调用

    函数调用 1. 文件内普通函数调用 创建一个js文件命名为2_callFunction.js,其中定义一个函数fun1,向返回对象输出了一段字符串“你好,我是fun1”. //------------ ...

  3. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  4. UE4新手引导之下载和安装虚幻4游戏引擎

    1) 进入虚幻4的官方主页(https://www.unrealengine.com/) 这里你可以获得关于虚幻4的最新资讯,包括版本更新.博客更新.新闻和商城等.自2015年起,该引擎已经提供免费下 ...

  5. EntityFramework.Extended 支持 MySql

    EntityFramework.Extended 默认不支持 MySql,需要配置如下代码: [DbConfigurationType(typeof(DbContextConfiguration))] ...

  6. SMBus set up a 2-byte EEPROM address for read/write

    Sequencer Engine spec: http://www.analog.com/media/en/technical-documentation/data-sheets/ADM1260.pd ...

  7. 敏捷转型历程 - Sprint4 回顾会

    我: Tech Leader 团队:团队成员分布在两个城市,我所在的城市包括我有4个成员,另外一个城市包括SM有7个成员.另外由于我们的BA离职了,我暂代IT 的PO 职位.PM和我在一个城市,但他不 ...

  8. 乐乎环球WiFi

    乐乎环球WiFi招商加盟 随身WiFi设备 乐乎环球Wifi是由北京蔚蓝创智科技有限公司研发的产品,是一款可以在全球100多个国家和地区实现免漫游4G高速上网的随身WiFi设备.和普通MiFi设备相比 ...

  9. Web 项目杂记(一)

    1.Tomcat 多实例部署 在Tomcat下多实例部署后,发现如下问题,采用etc/init.d/tomcat start方式无法启动,而需要采用startup.sh.查找原因发现,是因为多实例部署 ...

  10. 站在风口,你或许就是那年薪20w+的程序猿

    最近面试了一些人,也在群上跟一些群友聊起,发现现在的互联网真是热,一些工作才两三年的期望的薪资都是十几K的起,这真是让我们这些早几年就成为程序猿的情何以堪!正所谓是站在风口上,猪也能飞起来!我在这里就 ...