1.根据id名称取元素  $id(idName) 
2.根据class定义取元素  $class(className)返回所有class被定义成className的元素数组,或者$Eclass(className)返回第一个元素 
3.根据tag名称取元素  $tag(tagName)返回所有标签名称为tagName的元素数组,或者$Etag(tagName)返回第一个元素 
4.父子关系下取元素  $dom(id#idName class#className tag#tagName)返回idName元素下的所有class为className的所有元素的标签名称为tagName的元素数组,或者$Edom(id#idName class#className tag#tagName)返回第一个元素,每个关系之间以空格分隔,对应关系以井号分隔,关系之间可任意顺序 
5.取出来的元素会附带有扩展方法 
    a.getAttr(attrName) 取属性 
    b.setAttr(attrName, attrValue) 设置属性 
    c.getStyle(styleName) 取样式 
    d.setStyle(styleName,styleValue) 设置样式 
    e.getVal() 取值,如果是input,select,textarea取出来的是value的值,其它标签的话取出来的是内嵌html 
    f.setVal(value) 设置值, 如果是input,select,textarea设置的是value的值,其它标签的话设置的是内嵌html  
   g.show() 显示元素 
   h.hide() 隐藏元素 
5.AJAX操作使用函数,ajax(type,url,callback,data);  
    a.type  提交类型 
    b.url  提交地址 
    c.callback  回调函数 
    d.data  待提交数据(a=1&b=2) 
6.Cookie操作使用函数,cookie.set(k,v,e) k名称  v值  e有效期(秒)   cookie.get(k) 
​1. [文件] JSTools.js 
var JSTools = {version:1.0,author:'lymz',email:'lymz.86@gmail.com'};
var $id = function(id){
    return $extend(document.getElementById(id));
};
var $class = function(clas){
    return $extend(getElementsByClassName(clas));
};
var $Eclass = function(clas){
    var t = $class(clas);
    return t.length > 0 ? t[0] : null;
};
var $tag = function(tag){
    return $extend(document.getElementsByTagName(tag));
};
var $Etag = function(tag){
    var t = $tag(tag);
    return t.length > 0 ? t[0] : null;
};
var $dom = function(dom){
    var t = dom.split(' ');
    var p=null;
    for(var i = 0,l = t.length;i < l;++ i) {
        if(i > 0 && !p)
            break;
        else if(i > 0 && p) {
            if(p.length != undefined)
                p = p[0];
        }
        var tt = t[i].split('#');
        if(tt[0] == 'id')
            p = $id(tt[1]);
        else if(tt[0] == 'class') {
            tt[1] = tt[1].split('|');
            if(p)
                p = getElementsByClassName(tt[1][0],p);
            else
                p = $class(tt[1][0]);
 
            if(tt[1][1])
                p = $filter(p,tt[1][1]);
        } else if(tt[0] == 'tag') {
            tt[1] = tt[1].split('|');
            if(p)
                p = p.getElementsByTagName(tt[1][0]);
            else
                p = $tag(tt[1][0]);
 
            if(tt[1][1])
                p = $filter(p,tt[1][1]);
        } else
            p = null;
    }
    return $extend(p);
};
var $filter = function(p,filter){
    if(p == null)
        return null;
    var tt = new Array();
    if(filter.indexOf('=') !== -1) {
        var t = filter.split('=');
        for(var i = 0,j = 0,l = p.length;i < l;++ i) {
            if(p[i].getAttribute(t[0]) == t[1])
                tt[j++] = p[i];
        }
    } else if(filter.indexOf('^') !== -1) {
        var t = filter.split('^');
        for(var i = 0,j = 0,l = p.length;i < l;++ i) {
            if(p[i].getAttribute(t[0]).toLowerCase() != t[1].toLowerCase())
                tt[j++] = p[i];
        }
    } else {
        for(var i = 0,j = 0,l = p.length;i < l;++ i) {
            if(p[i].nodeName.toLowerCase() == filter.toLowerCase())
                tt[j++] = p[i];
        }
    }
    return tt;
};
var $Edom = function(dom){
    var t = $dom(dom);
    if(t != null && t.length != undefined)
        return t[0];
    else
        return t;
};
var $extend = function(object){
    if(!object)
        return object;
    var t = false;
    if(object.length == undefined){
        object = new Array(object);
        t = true;
    }
    for(var i = 0,l = object.length;i < l;++ i) {
        object[i].getAttr = function(attr){return this.getAttribute(attr);};
        object[i].setAttr = function(k,v){return this.setAttribute(k,v);};
        object[i].getStyle = function(k){return eval('this.style.'+k);};
        object[i].setStyle = function(k,v){return eval('this.style.'+k+'=\''+v+'\'');};
        object[i].getVal = function(){return this.value!=undefined?this.value:this.innerHTML;};
        object[i].setVal = function(v){if(this.value!=undefined)this.value=v;else this.innerHTML=v;return true;};
        object[i].show = function(){return this.setStyle('display','block');};
        object[i].hide = function(){return this.setStyle('display','none');};
    }http://www.enterdesk.com/special/meitu/​
    object.each=function(func){美图
        if(this.length == undefined)
            object = new Array(object);
        var it = null;
        for(var i = 0,l = object.length;i < l;++ i) {
            it = object[i];
            func(it,i);
        }
    };
    return t ? object[0] : object;
};
var ajax = function(type,url,func,data){
    if(window.ActiveXObject){
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        var xmlHttp=new XMLHttpRequest();
    }
    xmlHttp.open(type,url,true);
    xmlHttp.onreadystatechange=function(){
        if(xmlHttp.readyState == 4)
            if(xmlHttp.status == 200)
                if(func) func(xmlHttp.responseText);
    };
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.send(data?data:null);
};
var cookie = {
    get:function(k){
        var t = document.cookie.split('; ');
        for(var i = 0,l = t.length;i < l;++ i) {
            var tt = t[i].split('=');
            if(tt[0] == k) {
                return decodeURI(tt[1]);
            }
        }
        return undefined;
    },
    set:function(k,v,e){
        if(e) {
            var d = new Date();
            d.setTime(d.getTime()+(e*1000));
            e = ';expires='+d.toGMTString();
        } else
            e = '';
        document.cookie = k + '=' + v + e;
    }
};
var getElementsByClassName = function(c,p){
    p = p ? p : document;
    var arrElements = p.getElementsByTagName('*');
    var arrReturnElements = new Array();
    c = c.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + c + "(\\s|$)");
    var oElement;
    for(var i=0; i < arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return arrReturnElements;
};

简单的可兼容所有浏览器的操作html元素的javascript框架的更多相关文章

  1. 一个简单有效的兼容IE7浏览器的办法

    最近发现了一个简单有效的兼容IE7浏览器的办法 直接将下面代码复制道页面 <meta http-equiv="X-UA-Compatible" content="I ...

  2. 【面试必备】javascript操作DOM元素

    前言 时间过的真快,不知不觉就到年底了.问问自己,这一年你对自己的工作满意吗? 评价标准是什么呢?当然是马云的那两条准则了:钱给到了吗?干的爽吗?如果答案都是no,那么,你准备好跳槽了吗? 为了应对年 ...

  3. 【转】让Bootstrap 3兼容IE8浏览器

    FROM : http://www.ijophy.com/2014/05/bootstrap3-compatible-with-ie8.html 最近在研究Bootstrap(官方,Github)这个 ...

  4. 让Bootstrap 3兼容IE8浏览器

    最近在研究Bootstrap(官方,Github)这个优秀的前端框架,Bootstrap最开始是Twitter团队内部的一个前端框架,所谓前端框架就是一个CSS/HTML框架,框架里面有下拉菜单.按钮 ...

  5. Bootstrap 3兼容IE8浏览器(转)

    Bootstrap是一个响应式的布局,你可以在宽屏电脑.普通电脑,平板电脑,手机上都得到非常优秀的布局体验.这种响应式的布局正是通过CSS3的媒体查询(Media Query)功能实现的,根据不同的分 ...

  6. Zclip复制页面内容到剪贴板兼容各浏览器

    Zclip:复制页面内容到剪贴板兼容各浏览器 WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮 ...

  7. js兼容各个浏览器的复制功能

    看似简单的复制功能,用js做起来竟然遇到各种情况.刚开始在网上搜索到复制功能的几种实现方法,但是都不兼容.最后还是用的插件代码如下 html模板 <tr> <td>1</ ...

  8. JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 [TOC] 一.缘由 由于在ES6之前,JavaScript中没有定义类(class)语法.导致大家用各种五花八门的办法来定义类,代码风格不统一.而且对于模拟面向对象的三大支柱& ...

  9. JS兼容各个浏览器的本地图片上传即时预览效果

    JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...

随机推荐

  1. GraphMatrix::BFS广度优先搜索

    查找某一结点的邻居: virtual int firstNbr(int i) { return nextNbr(i, n); } //首个邻接顶点 virtual int nextNbr(int i, ...

  2. APT攻击:91%的攻击是利用电子邮件

    一封假冒的"二代医疗保险补充保险费扣费说明",导致上万家中小型企业的资料被窃;一封伪装银行交易纪录的钓鱼信件,让韩国爆发史上最大黑客攻击. APT攻击通常会以电子邮件的形式出现,邮 ...

  3. 如何将.class文件反编译为.java文件

    直接用jd-gui jad太麻烦了---------2014-12-19 23:24:04------反编译工具jad简单用法 以下假设jad.exe在c:\java目录下 一.基本用法 Usage: ...

  4. 转:几款主流pcb软件比较

      原理图设计软件:会ORCAD就可以了,支持的Netlist超多,基本是业界标准. PCB Layout 软件 1.Protel,现在推AltiumDesigner.国内低端设计的主流,国外基本没人 ...

  5. hadoop生态系统学习之路(六)hive的简单使用

    一.hive的基本概念与原理 Hive是基于Hadoop之上的数据仓库,能够存储.查询和分析存储在 Hadoop 中的大规模数据. Hive 定义了简单的类 SQL 查询语言,称为 HQL.它同意熟悉 ...

  6. C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式?

    // ConsoleApplication12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" // ConsoleApplication1 ...

  7. Java学习之路 第四篇 oop和class (面向对象和类)

    本人水平有限,创作本文是为了记录学习和帮助初学者学习,欢迎指正和补充 一.面向对象编程的设计概述 很多同学都在学校学了电脑的编程,现在的书籍大部分都是oop面向对象编程,一个很抽象的的名字,比较难以理 ...

  8. php eval()计算

    php中的eval()函数可以处理php代码,因此可以用此来解决:以字符串格式存储的计算公式 比如: $str='2*(3+12)'; $s=eval("return $str;" ...

  9. Navicat Premium创建事件计划调用MySql存储过程

    1.检查事件计划,操作:工具——命令行界面——执行命令 show variables like '%event_scheduler%'; (分号不能丢)—— event_scheduler  ON 表 ...

  10. python 基础 7.6 sys 模块

    一.sys 模块 sys 模块主要功能是获取参数     [root@www pythonscripts]# cat 2.py #!/usr/bin/python #coding=utf-8   im ...