1、在非标准的浏览器,IE8及以下的浏览器不支持className的操作,包括getElementByClassName,addClassName,removeClassName;

 2、getElementByClassName处理兼容的方法:

  

var aLi=getElementByClassName(document,'box');//如果多一个限制元素范围的形式为:getElementByClassName(document,'box','li');

function getElementByClassName(parent,className){//parent指在该范围下来选取节点,className指要获取的className名字
var aEls=parent.getElementByTagName('*');//获取页面所有元素,也可以通过传参的方式将“*”替换为想要的元素范围。比如想要获取className为box的所有li元素,就需要将“*”改为li,将传参部分多增加一个tagName,传给tagName的参数为li。
//getElementByClassName(parent,className,tagName);
//var aEls=parent.getElementByTagName(tagName); var arr=[];
for(var i=0;i<aEls.length;i++){
var aClassName=aEls[i].className.split(' ');
for(var j=0;j<aClassName.length;j++){ if(aClassName[j]==className){
arr.push(aEls[i]);
break;
}
}
}
  return arr;
}

3、添加className的方法:addClass()

 function addClass(obj,className){
if(obj.className==''){
//如果原来没有className
obj.className=className;
}else{
// 如果有className
//如果要添加的className在原来的className中不存在
var arrClassName=obj.className.split(' ');
var index=arrIndexOf(arrClassName,className);
if(index==-1){
obj.className+=' '+className;
}
}
//如果要添加的className在原来的className中存在,则不用再添加了 }
function arrIndexOf(arrClassName ,className){
for(var i=0;i<arrClassName.length;i++){
if(a[i]==className){
return i;
}
}
return -1;
}

4、删除className的方法:removeClass

function removeClass(obj,className){
//如果原来有class
if( obj.className!=''){
var arrClassName=obj.className.split(' ');
var index=arrIndexOf(arrClassName.className);
//如果有要移除的class
if(index!=-1){
arrClassName.splice(index,1);
obj.className=arrClassName.join(' ');
}
//如果没有要移除的class则不用进行操作
}
}
function arrIndexOf(arrClassName ,className){
for(var i=0;i<arrClassName.length;i++){
if(a[i]==className){
return i;
}
}
return -1;
}

最新文章

  1. 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结
  2. 用PHP将Unicode 转化为UTF-8
  3. 从输入url到页面加载完成都发生了什么?
  4. JAVA-面向对象-特性
  5. 转: 静态模式makefile中$(cobjs): $(obj)/%.o: $(src)/%.c
  6. [BZOJ - 2819] Nim 【树链剖分 / DFS序】
  7. RUBY类特性
  8. 最简单的Java框架
  9. Spring + Spring MVC + MyBatis 整合
  10. 通过Javascript调用微软认知服务情感检测接口的两种实现方式
  11. Flask下载文件
  12. PV &amp; PVC - 每天5分钟玩转 Docker 容器技术(150)
  13. linux下open-vswitch安装卸载操作
  14. HTML5 &amp; tel &amp; make a phone call
  15. Codeforces300 F. A Heap of Heaps
  16. MySQL中exists和in的区别及使用场景
  17. php路由
  18. Django的rest_framework的序列化组件之序列化多表字段的方法
  19. 部署tms过程记录
  20. Centos下zookeeper的安装配置

热门文章

  1. bzoj1125:[POI2008]Poc
  2. Java程序员都应该去使用一下这款强大的国产工具类库
  3. java利用myeclipse自带三大框架搭建三大框架(Hibernate+Struts2+Spring)过程详解
  4. Verify the Developer App certificate for youraccount is trusted on your device
  5. JMeter提取和重用作为变量 - 具有更多提取器
  6. UWP 播放媒体控件
  7. override和overload的小笔记
  8. C#的特性学习
  9. nodejs 快要变成爬虫界的王者
  10. 定时任务-ScheduledExecutorService