JS兼用IE的通过class名获取CSS对象组

原生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:

时间: 2024-10-12 04:37:28

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

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

JSFinder介绍 JSFinder是一款用作快速在网站的js文件中提取URL,子域名的脚本工具. 支持用法 简单爬取 深度爬取 批量指定URL/指定JS 其他参数 以往我们子域名多数使用爆破或DNS中获得,这个脚本从JS文件中匹配出子域也算是添砖加瓦. 简单爬取示例 子域名清单 https://github.com/Threezh1/JSFinder 点个赞 (0) 原文地址:https://www.cnblogs.com/nul1/p/11140910.html

js根据url查询字符串里的键名获取其值

先来运行结果 下面是页面代码 testJsGetUrlAttribute.html <script> var rout = getUrlAttribute('rout'); if(null!=rout) { alert(rout); } /** * 20150514 14:30 * 作者:Ro * 根据url查询字符串里的键名获取其值 */ function getUrlAttribute(parameName) { //location.search是从当前URL的?号开始的字符串,即查询字

Mssql根据表名获取字段

根据表名获取表名.字段.描述和类型长度,正好有需要的朋友们可参考添加自需的字段,sql语句如下: 1 SELECT TableName = OBJECT_NAME(cols.object_id), ColumnsName = props.name, Description = props.value, Length=cols.max_length 2 FROM sys.columns cols inner JOIN sys.extended_properties props ON 3 props

js用currentStyle和getComputedStyle获取css样式(非行间) 兼容ie与火狐

用js的style属性可以获得html标签的样式,但是不能获取非行间样式.那么怎么用js获取css的非行间样式呢?在IE下可以用currentStyle,而在火狐下面我们需要用到getComputedStyle.下面是js代码. function getStyle(obj, name) { if(obj.currentStyle) { return obj.currentStyle[name]; } else { return getComputedStyle(obj,false)[name];

原生js获取css中class的方法

function getByClass( className, context) { var context = context || document; if( context.getElementsByClassName) { return context.getElementsByClassName(className); } var nodes = context.getElementsByTagName("*"); ret=[]; for( var i=0; i<nod

angular js 实现表单提交时下面的table获取到表单里面的数据

angular js 实现表单提交时下面的table获取到表单里面的数据<!DOCTYPE html><html ><head lang="en"> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="css/bootstrap.min.css"/> <s

java中通过包名获取该包下的所有class

前面做的在mybatis通过注解自动创建更新表结构的项目,其中在spring加载完毕之后需要去获取所有实体类的class,用来获取实体类属性上的注解,进而分析表结构达到创建修改表结构的目的. 所以就需要一个功能,通过包名获取该包下的所有class,那么直接贴代码: package com.sunchenbin.store.utils; import java.io.File; import java.io.FileFilter; import java.io.IOException; impor

js获取css的各种样式并且设置他们

js原生获取css样式,并且设置,看似简单,其实并不简单,我们平时用的ele.style.样式,只能获取内嵌的样式,但是我们写的样式基本都在style属性里面; 这里我们就需要: 下面这个代码主要是设置为了兼容IE这孙子; function getStyle(element, attr) { if (element.currentStyle) { return element.currentStyle[attr];//傻逼IE的获取元素的方法 } else { return getCompute

封装常用的js(Base.js)——【01】理解库,获取节点,连缀,

封装常用的js(Base.js)——[01]理解库,获取节点,连缀,  youjobit07 2014-10-10 15:32:59 前言:       现如今有太多优秀的开源javascript库,比如jQuery,Prototype,Dojo等等,这些javascript库已经把最常用的代码进行了有效的封装,以便我们开发,从而提高效率.现在我这里探讨的是自己创建一个javascript库,自己创建的肯定没有那些开源javascript库功能强大,目的主要是为了提升自己的原生javascrip