document.getElementByClassName 兼容问题

因为document.getElementByClassName 方法不兼容IE ,所以要封装一个其他的方法。

思路:

先获取所有的tags,然后取出他们的className,然后通过字符串判断他们的class是否与目标classname一样,如果一样,则把他们取出来

第二种情况:如果DOM元素的class名有多个

通过字符串切割,将DOM元素的所有class名放入一个数组中遍历,如果找到目标名称,则将此元素加入数组arrClass。


var boxClass = document.getElementsByTagName('*');

var arrClass = [];

for (var i = 0; i < boxClass.length; i++) {

var name = boxClass[i].className;

var nameBox = name.split(' ');

for (var j = 0; j < nameBox.length; j++) {

if (nameBox[j] == 'box1') {

arrClass.push(boxClass[i]);

}

};

};

//测试

arrClass[0].style.backgroundColor = 'green';*/



封装此方法:

传入两个参数,obj对象和要获取的class名(字符串)




封装


形参传入一个字符串,通过此方法,获取界面中所有含有此类名的DOM元素。

并返回包含所有类名DOM的数组

因为我们遍历所有的DOM对象很占内存,所以我们可以挑出制定的DOM对象,并从中挑出classname。


function getClassName(para,obj){

obj = obj||document;

if(obj.getElementsByClassName){

return obj.getElementsByClassName(para);

} else {

var boxClass = obj.getElementsByTagName('*');

var arrClass = [];

for (var i = 0; i < boxClass.length; i++) {

// var name = boxClass[i].className;

var nameBox = boxClass[i].className.split(' ');

for (var j = 0; j < nameBox.length; j++) {

if (nameBox[j] == para) {

arrClass.push(boxClass[i]);

}

};

};

}

return(arrClass); }





测试

var liBox = document.getElementById('list');

var arr1 = getClassName('inlist',liBox);

for (var i = 0; i < arr1.length; i++) {

arr1[i].style.backgroundColor = '#ccc';

}


封装获取Id和Class的方法


function $(para,obj){

if(para.charAt(0) == '#' ){

//通过截取字符串来判断执行的是获取id还是class

var arr = para.split("#");

var idName = arr[1];

return document.getElementById(idName);

} else if(para.charAt(0) == '.') {

var arr1 = para.split(".");

var classming = arr1[1];

obj = obj||document;

if(obj.getElementsByClassName){

return obj.getElementsByClassName(classming);

} else {

var boxClass = obj.getElementsByTagName('*');

var arrClass = [];

for (var i = 0; i < boxClass.length; i++) {

var nameBox = boxClass[i].className.split(' ');

for (var j = 0; j < nameBox.length; j++) {

if (nameBox[j] == classming) {

arrClass.push(boxClass[i]);

}

};

};

}

return(arrClass);

} else {

return false;}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,899评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • (一)知识点 1.1属性 element.className element对象的class字符串数组,每个字符...
    Zvit阅读 466评论 0 0
  • 一 李雷和韩梅梅恋爱了,像电视偶像剧中那样,李雷不过是一个穷酸小子,韩梅梅却家境殷实,父亲身家过亿。 李雷这个人,...
    沐雨轩阅读 922评论 3 3