function $(){ return document.getElementById(arguments[0])};

 /**
* 得到上一个元素
* @param {Object} elem
*/
function prev(elem){
    do{
        elem = elem.previousSibling;
    } while(elem && elem.nodeType != 1);
    return elem;
} /**
* 得到下一个元素
* @param {Object} elem
*/
function next(elem){
    do{
        elem = elem.nextSibling;
    } while(elem && elem.nodeType != 1);
    return elem;
} /**
* 得到第一个元素
* @param {Object} elem
*/
function first(elem){
    elem = elem.firstChild;
    return elem && elem.nodeType != 1 ? next(elem) : elem;
} /**
* 得到最后一个元素
* @param {Object} elem
*/
function last(elem){
    elem = elem.lastChild;
    return elem && elem.nodeType != 1 ? prev(elem) : elem;
} /**
* 得到父元素
* @param {Object} elem
* @param {Number} num 需要寻找的父级级别
*/
function parent(elem, num){
    num = num || 1;
    for(var i=0; i<num; i++){
        if(elem != null) elem = elem.parentNode; //原书中这块有错
    }
    return elem;
} /**
* 得到相关name元素
* @param {String} name
* @param {Object} elem
*/
function tag(name, elem){
    return (elem || document).getElementsByTagName(name)
} /**
* 根据tag寻找
* @param {String} name
* @param {String} type
*/
function hasClass(name, type){
    var r = [];
    var re = new RegExp('(^|\\s)'+name+'(\\s|$)');
    var e = document.getElementsByTagName(type || '*');
    for(var i=0; i<e.length; i++){
        if(re.test(e[i].className)){
            r.push(e[i]);
        }
    }
    return r;
    //http://www.cnblogs.com/rubylouvre/archive/2009/09/01/1557765.html //司徒兄有不同的看法
} /**
* 获取元素文本
* @param {Object} e
*/
function text(e){
    var t = '';
    e = e.childNodes || e;
    for(var i=0; i<e.length; i++){
        //如果不是元素,则追加其文本值
        t += e[i].nodeType != 1 ? e[i].nodeValue : text(e[i].childNodes);
    }
    return t;
} /**
*
* @param {String} elem
* @param {String} name
* @param {String} value
*/
function attr(elem, name, value){
    if(!name || name.constructor != String){
        return '';
    }
   
    //检查name的属性是否在怪异命名情形中
    name = {'for': 'htmlFor', 'class': 'className'}[name] || name;
   
    if(typeof value != 'undefined'){
        elem[name] = value;
        
        if(elem.setAttribute){
            elem.setAttribute(name, value);
        }
    }
   
    return elem[name] || elem.getAttribute(name) || '';
} /**
* 在另一个元素之前插件元素
* @param {Object} parent
* @param {Object} before
* @param {String} elem
*/
function before(parent, before, elem){
    if(elem == null){
        elem = before;
        before = parent;
        parent = before.parentNode;
    }
   
    //获取元素的新数组
    var elems = checkElem(elem);
   
    //向后遍历
    for(var i=elems.length; i>=0; i--){
        parent.insertBefore(elems[i], before);
    }
} /**
* 创建元素
* @param {Object} elem
*/
function create(elem){
    //测试是否用命名空间来创建新的元素
    return document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', elem) : document.createElement(elem);
} /**
* before 辅助函数
* @param {Object} elem
*/
function checkElem(a){
    var r = [];
    if(a.constructor != Array){ a = [a]};
    for(var i=0; i<a.length; i++){
        //如果是字符串
        if(a[i].constructor == String){
            //用一个临时元素来存放HTML
            var div = document.createElement('div');
            div.innerHTML = a[i];
            //提取DOM结构到临时的div中
            for(var j=0; j<div.childNodes.length; j++){
                r[r.length] = div.childNodes[j];
            }
        } else if(a[i].length){ //如果它是数组
            //假定DOM节点数组
            for(var j=0; j<a[i].length; j++){
                r[r.length] = a[i][j];
            }
        } else { //否则假定是DOM节点
            r[r.length] = a[i];
        }
    }
   
    return r;
} //此方法我已修改与原文中有异
/**
* 添加元素 (如果只有一个参数(无elem),则直接添加到document.body上)
* @param {Object} elem
* @param {Object} parent
*/
function append(parent, elem){
    if(elem == null){
        elem = parent;
        parent = null;
    }
   
    //获取元素数组
    var elems = checkElem(elem);
    for(var i=0; i< elems.length; i++){
        (parent || document.body).appendChild(elems[i]);
    }
} /**
* 删除独立的DOM
* @param {Object} elem
*/
function remove(elem){
    if(elem){ elem.parentNode.removeChild(elem) };
} /**
* 删除一个节点的所有子节点
* @param {Object} elem
*/
function empty(elem){
    while(elem.firstChild){
        remove(elem.firstChild);
    }
} /**
* 阻止事件冒泡
* @param {Object} e
*/
function stopBubble(e){
    if(e && e.stopPropagation){
        e.stopPropagation();
    } else {
        window.event.cancelBubble = true;
    }
} function stopDefault(e){
    if(e && e.preventDefault){
        e.preventDefault();
    } else {
        window.event.returnValue = false;
    }
    return false;
} /**
* 得到外链样式
* @param {Object} elem
* @param {String} name
*/
function getStyle(elem, name){
    if(elem.style[name]){
        return elem.style[name];
    } else if(elem.currentStyle){ //如果ie
        return elem.currentStyle[name];
    } else if(document.defaultView && document.defaultView.getComputedStyle){ //如果是不是w3c方法
        name = name.replace(/([A-Z])/g, '-$1');
        name = name.toLowerCase();
        
        //获取样式
        var s = document.defaultView.getComputedStyle(elem, '');
        return s && s.getPropertyValue(name);
    } else {
        return null;
    }
} /**
* 获取元素的x位置
* @param {String} elem
*/
function pageX(elem){
    return elem.offsetParent ? elem.offsetLeft + pageX(elem.offsetParent) : elem.offsetLeft;
} /**
* 获取元素的Y位置
* @param {String} elem
*/
function pageY(elem){
    return elem.offsetParent ? elem.offsetTop + pageY(elem.offsetParent) : elem.offsetTop;
} /**
* 获取元素相对于父级的x位置
* @param {String} elem
*/
function parentX(elem){
    return elem.parentNode == elem.offsetParent ? elem.offsetLeft : pageX(elem) - pageX(elem.parentNode);
} /**
* 获取元素相对于父级的Y位置
* @param {String} elem
*/
function parentY(elem){
    return elem.parentNode == elem.offsetParent ? elem.offsetTop : pageY(elem) - pageY(elem.parentNode);
} /**
* 查找元素的左端位置
* @param {Object} elem
*/
function posX(elem){
    return parseInt(getStyle(elem, 'left'));
} /**
* 查找元素的顶端位置
* @param {Object} elem
*/
function posY(elem){
    return parseInt(getStyle(elem, 'top'));
} /**
* 设置元素水平位置
* @param {Object} elem
* @param {Object} pos
*/
function setX(elem, pos){
    elem.style.left = pos + 'px';
} /**
* 设置垂直水平位置
* @param {Object} elem
* @param {Object} pos
*/
function setY(elem, pos){
    elem.style.top = pos + 'px';
} /**
* 获取高度
* @param {Object} elem
*/
function getHeight(elem){
    return parseInt(getStyle(elem, 'height'));
} /**
* 获取宽度
* @param {Object} elem
*/
function getWidth(elem){
    return parseInt(getStyle(elem, 'width'));
} /**
* 得到完整的高度,就算对象已隐藏
* @param {Object} elem
*/
function fullHeight(elem){
    //如果元素显示
    if(getStyle(elem, 'display') != 'none'){
        return elem.offsetHeight || getHeight(elem);
    }
   
    //如果不显示,则复原css
    var old = resetCss(ele, {
        display: '',
        visibility: 'hidden',
        position: 'absolute'
    });
   
    var h = elem.clientHeight || getHeight(elem);
    restoreCss(elem, old);
   
    return h;
} /**
* 恢复原有设置
* @param {String} elem
* @param {Object} prop
*/
function resetCss(elem, prop){
    var old = {};
   
    for(var i in prop){
        old[i] = prop[i];
        elem.style[i] = prop[i];
    }
    return old;
} /**
*
* @param {String} elem
* @param {Object} old
*/
function restoreCss(elem, old){
    for(var i in old){
        elem.style[i] = old[i];
    }
}

常用的js函数的更多相关文章

  1. 工作中常用的JS函数整理分享(欢迎大家补充)

    今年在渣X工作整理的常用JS函数 今年来了渣X工作,我所在这个部门分工很奇怪,CSS竟然有专门的人在搞,开发PHP的人员需要处理JS,以至于有时候开发起来不是那么得心应手,感觉把JS和CSS拆开就像是 ...

  2. 常用原生JS函数和语法集合

    luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...

  3. 一些常用的JS函数

    //获取元素属性 function getStyle(obj, attr) { return obj.currentStyle ? obj.currentStyle[attr] : getComput ...

  4. 100多个基础常用JS函数和语法集合大全

    网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...

  5. (转)在网页中JS函数自动执行常用三种方法

    原文:http://blog.sina.com.cn/s/blog_6f6b4c3c0100nxx8.html 在网页中JS函数自动执行常用三种方法 在网页中JS函数自动执行常用三种方法 在HTML中 ...

  6. 原生JS研究:学习jquery源码,收集整理常用JS函数

    原生JS研究:学习jquery源码,收集整理常用JS函数: 1. JS获取原生class(getElementsByClass) 转自:http://blog.csdn.net/kongjiea/ar ...

  7. api日常总结:前端常用js函数和CSS常用技巧

    我的移动端media html{font-size:10px} @media screen and (min-width:321px) and (max-width:375px){html{font- ...

  8. web前端关于html转义符的常用js函数

    web前端关于html转义符的常用js函数 //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+? ...

  9. 基础常用JS函数和语法

    100多个基础常用JS函数和语法集合大全  来源:http://www.cnblogs.com/hnyei/p/4605103.html 网站特效离不开脚本,javascript是最常用的脚本语言,我 ...

随机推荐

  1. python_way ,day2 字符串,列表,字典,时间模块

    python_way ,day2 字符串,列表,字典,自学时间模块 1.input: 2.0 3.0 区别 2.0中 如果要要用户交互输入字符串: name=raw_input() 如果 name=i ...

  2. Entity Framework 学习初级篇--基本操作:增加、更新、删除、事务(转)

    摘自:http://www.cnblogs.com/xray2005/archive/2009/05/17/1458568.html 本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作 ...

  3. GitHub上不错的Android开源项目(三)

    收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://ww ...

  4. JMS【二】--ActiveMQ简单介绍以及安装

    现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文JMS[一]--JMS基本概念,我们介绍了消息通信的规范JMS,我 ...

  5. 利用tomcat配置网站

    1: 首先将tomcat考到C盘: 2:建立我们存放web应用的目录,我建立在D:\myWeb  ,然后将自己的web应用考到myWeb目录下: 3:wApp的目录结构为: WEB-INF: 结构: ...

  6. Python学习笔记day5

    模块 1.自定义模块 自定义模块就是在当前目录下创建__init__.py这个空文件,这样外面的程序才能识别此目录为模块包并导入 上图中libs目录下有__init__.py文件,index.py程序 ...

  7. new,delete和malloc,free以及allocator<T>

    一)new和delete,自己觉得一句话就是:最好同一作用域内,必须成对使用 先给出自己的认识: malloc,free,申请和释放一段heap堆中的内存. new:申请heap内存并在申请的内存中放 ...

  8. shiro-web整合

    1.所需要jar <!-- shiro核心包 --> <dependency> <groupId>org.apache.shiro</groupId> ...

  9. poj2546Circular Area(两圆相交面积)

    链接 画图推公式 这两种情况 都可用一种公式算出来 就是两圆都求出圆心角 求出扇形的面积减掉三角形面积 #include <iostream> using namespace std; # ...

  10. php生成mysql的数据字典

    <?php header('content-type:text/html;charset=utf-8'); define('DB_HOST','localhost'); define('DB_U ...