转自:Garon_InE

原生js方法“document.getElementsByClassName”在ie8及其以下浏览器中不能使用,所以写了一个兼容IE的方法。

完整的页面代码如下: 
testJsGetCssClass.html

 <html>
<head>
<style type="text/css">
.test_class_div {
font-size: 14px;
border: 1px solid #ccc;
margin: 10px;
padding: 5px;
font-weight: bold;
color: red;
}
</style> <script>
/**
*打印js对象详细信息
*/
function alertObj(obj)
{
var description = "";
for ( var i in obj)
{
var property = obj[i];
description += i + " = " + property + "\n";
}
alert(description);
} /**
*通过class名和标签名获取css样式对象组
*/
function getClassNames(classStr, tagName)
{
if (document.getElementsByClassName)
{
return document.getElementsByClassName(classStr)
} else
{
//为了兼容ie8及其以下版本的方法
var nodes = document.getElementsByTagName(tagName), ret = [];
for (i = 0; i < nodes.length; i++)
{
if (hasClass(nodes[i], classStr))
{
ret.push(nodes[i])
}
}
return ret;
}
} /**
*判断节点class存在性
*/
function hasClass(tagStr, classStr)
{
//这个正则表达式是因为class可以有多个,判断是否包含
var arr = tagStr.className.split(/\s+/);
for ( var i = 0; i < arr.length; i++)
{
if (arr[i] == classStr)
{
return true;
}
}
return false;
}
</script>
</head>
<body>
<div class="test_class_div">11111111</div>
<div class="test_class_div">22222222</div>
<div class="test_class_div">33333333</div>
<script>
//由于加载顺序,获取对象的代码应写在对象已加载之后
var divs = getClassNames('test_class_div', 'div');
if (null != divs)
{
alertObj(divs);
//遍历对象,改其css样式
for ( var i = 0; i < divs.length; i++)
{
divs[i].style.color = "blue";
}
}
</script>
</body>
</html>

运行结果: 
初始字体颜色为红色,通过对象组修改后为蓝色。

firefox:

ie8:

JS兼用IE8的通过class名获取CSS对象组的更多相关文章

  1. Raphael.js image 在ie8以下的兼容性问题

    Raphael.js 在ie7,ie8浏览器内绘制图形採用的vml,在绘制image的时候会解析成 <?xml:namespace prefix = "rvml" ns = ...

  2. js兼用性

    1.document.formName.item("itemName") 问题 说明:IE下,可以使用document.formName.item("itemName&q ...

  3. JSFinder:一个在js文件中提取URL和子域名的脚本

    JSFinder介绍 JSFinder是一款用作快速在网站的js文件中提取URL,子域名的脚本工具. 支持用法 简单爬取 深度爬取 批量指定URL/指定JS 其他参数 以往我们子域名多数使用爆破或DN ...

  4. js 获取属性名称,再根据这个属性名获取值

    if (result.success) { var obj = JSON.parse(result.data); var sltObj = document.getElementById(" ...

  5. 【总结整理】js获取css的属性(内部,外部,内嵌(写在tag中))

    在JS中需要获取某个元素的宽高或者是绝对定位的位置信息,通常我们会这么写: var elemWidth = elem.style.width; console.log(elemWidth); //(空 ...

  6. js中获取css属性

    直接获取 window.onload = function() { var but = document.getElementById('button'); var div = document.ge ...

  7. JS中使用document.defaultView.getComputedStyle()、currentStyle()方法获取CSS属性值

    在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如: 1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属性 ...

  8. 3.jquery在js文件中获取选择器对象

    一.常用的选择器有一下几种: 1.标签选择器 2.类选择器 3.id选择器 4.并集选择器 5.层级选择器 二.如何获取选择器对象: <!DOCTYPE html> <html la ...

  9. 为什么我获取不到这个css样式?js原生获取css样式总结

    还是自己遇到的一个坑的总结吧!与其说是坑不如说自己学艺不精,让我先哭一会!! 需求 简单就是获取一个css的height (好吧 就是一个这么简单的需求) 实践 好吧 长时间的JQ 我已经对原生无能了 ...

随机推荐

  1. js 遍历tree的一个例子(全遍历),更复杂的功能

    更复杂的功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  2. css3 box-shadow 用法

    第1个值水平偏移值 第2个值垂直偏移值 第3个值设置对象的阴影模糊值 第4个值设置对象的阴影外延值 外阴影常规效果box-shadow:5px 5px rgba(0,0,0,.6); 外阴影模糊效果b ...

  3. 省市联动 js

    工作中见到这个省市联动代码,虽然很简单也能写出来,还是随便把它记录下来. //省市联动 function area(obj_id, area_pId, data_call_back) { ) retu ...

  4. SecureCRT 遇到一个致命的错误且必须关闭

    1.将报错路径中VanDyke文件夹内的东西删除掉2.运行regedit,在注册表中将HKEY_LOCAL_MACHINA中SOFTWARE里的VanDyke删除3.注册表中打开HKEY_CURREN ...

  5. 2.2 Rust 数据类型

    2.2 数据类型 let guess: u32 = "42".parse().expect("Not a number!"); Rust has four pr ...

  6. mapreduce统计总数

    现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,名为buyer_favorite1. buyer_favorite1包含:买家id,商品id,收藏日期这三个字段,数据以“\t ...

  7. javascript里label语句的简单示例

    在javascript中,我们可能很少会去用到 Label 语句,但是熟练的应用 Label 语句,尤其是在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的 ...

  8. 关于django2.0的外键关系新特性之on_delete!

    Django2.0里model外键和一对一的on_delete参数 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错: ...

  9. centos7基本环境搭建

    1. 准备权限:让普通用户具备sudo执行权限 切换到root用户,su # vi /etc/sudoers 添加  koushengrui    ALL=(ALL)       ALL 这里很容易忘 ...

  10. android Binder机制(一)架构设计

    Binder 架构设计 Binder 被设计出来是解决 Android IPC(进程间通信) 问题的.Binder 将两个进程间交互的理解为 Client 向 Server 进行通信. 如下:bind ...