实用JavaScript脚本

收集日常实用的JavaScript小脚本

共享load

function addLoadEvent(fun){
   var oldLoad = window.onload;
   if(typeof oldLoad != "function"){
       window.onload = fun;
   }else{
       window.onload = function(){
           oldLoad();
           fun();
       }
   }
}

insertAfter

function insertAfter(newNode,oldNode){
    /*获取父元素*/
    var parent = oldNode.parentNode;
    /*判断oldNode是否为最后一个*/
    if(oldNode == parent.lastChild){
        parent.appendChild(newNode);
    }else{
        parent.insertBefore(newNode,oldNode.nextSibling);
    }
}

删除空白节点

function removeEmpty(node){
    for(var i=0;i<node.length;i++){
    if(node[i].nodeType === 3 && /^\s+$/.test(node[i].nodeValue))
        {
            node[i].parentNode.removeChild(node[i])
        }
    }
    return node;
}

数组去重

function remove(){
   var a = [1,8,5,6,8,7,9,5,2,4,3,1];
    var result = [];
    for(var i=0;i< a.length;i++){
        if(result.indexOf(a[i]) == -1){
            result.push(a[i]);
        }
    }
    alert(result.sort());
}

建立XMLHttpRequest对象

function createNew(){
    if(window.XMLHttpRequest){
        return new XMLHttpRequest();
    }else if(window.ActiveXObject){
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

getELementsByClassName兼容

function getClass(node,className){
    if(node.getElementsByClassName){
        return node.getElementsByClassName(className);
    }else{
        /*获取node下的全部元素节点*/
        var result = [];
        var element = node.getElementsByTagName("*");
        for(var i=0;i<element.length;i++){
             /*判断节点的className属性是否为指定className*/
            if(element[i].className.indexOf(className) != -1){
                result.push(element[i]);
            }
        }
        return result;
    }
}

添加缩略语列表

function addAbbr(){

/*向后兼容*/
if(!document.getElementsByTagName){return false;}
if(!document.createElement){return false;}
if(!document.createTextNode){return false;}

/*遍历文档中的所有abbr标签*/
var abbrs = document.getElementsByTagName("abbr");
var data = [];

/*判断这个文档中是否有缩略语*/
if(abbrs.length < 0){
    return false;
}else{
    for(var i=0;i<abbrs.length;i++){
        /*兼容IE6版本下的IE和其他不支持abbr标签的属性*/
        if(abbrs[i].childNodes.length < 1) continue;

        var title = abbrs[i].getAttribute("title");
        var name = abbrs[i].innerHTML;
        data[name] = title;
    }
}

/*添加HTML文档节点 */
/*建立展示区域*/
var body = document.getElementsByTagName("body")[0];
/*标题*/
var h2 = document.createElement("h2");
var txt = document.createTextNode("定义列表:");
/*建立列表*/
var dl = document.createElement("dl");
/*添加到DOM树*/


/*for-in 循环  遍历数据数组  取出值*/
for(index in data){
    /*获取title*/
    var detail = data[index];
     /*建立dt*/
    var dt = document.createElement("dt");
    var txt1 = document.createTextNode(index);
    dt.appendChild(txt1);
    /*建立dd*/
    var dd = document.createElement("dd");
    var txt2 = document.createTextNode(detail);
    dd.appendChild(txt2);

    /*将这两项添加到dl列表中*/
    dl.appendChild(dt);
    insertAfter(dd,dt);
}

/*浏览器兼容*/
if(dl.childNodes.length < 1) {
    return false;
}else{
    h2.appendChild(txt);
    body.appendChild(h2);
    body.appendChild(dl);
}

添加文献链接

/*默认情况下blockquote标签的cite属性是不会显示的,现在手动在引用字段后面添加引用地址*/
function addLink(){
    /*向后兼容*/
    if(!document.getElementsByTagName) {return false}
    if(!document.createElement) {return false}
    if(!document.createTextNode) {return false}

    /*获取全部blockquote*/
    var quote = document.getElementsByTagName("blockquote");

    /*遍历节点*/
    for(var i=0;i<quote.length;i++){
        if(quote[i].getAttribute("cite")){
            /*获取cite属性*/
            var cite = quote[i].getAttribute("cite");
            /*获取blockquote标签的最后一个有效子节点  去除空白节点*/
            var quoteChild = quote[i].getElementsByTagName("*");
            var elem = quoteChild[quoteChild.length-1];
            /*创建链接*/
            var a = document.createElement("a");
            /*链接标题*/
            var aName = document.createTextNode("source");
            a.appendChild(aName);
            a.setAttribute("href",cite);
            /*创建上标*/
            var sup = document.createElement("sup");
            sup.appendChild(a);
            /*添加到原有子节点之后*/
            elem.appendChild(sup);

        }
    }
}

快捷键清单

function addAccess(){
    /*向后兼容*/
    if(!document.getElementsByTagName || !document.createElement ||!document.createTextNode) return false;

    /*获取文档中的全部链接标签*/
    var link = document.getElementsByTagName("a");
    /*创建一个列表*/
    var ul = document.createElement("ul");
    var h2 = document.createElement("h2");
    var title = document.createTextNode("快捷键清单");
    var body = document.getElementsByTagName("body")[0];
    body.appendChild(ul);
    ul.appendChild(h2);
    h2.appendChild(title);
    /*保存快捷键和页面名称的数组*/
    var result = [];

    for(var i=0;i<link.length;i++){
        /*判断是否有accesskey属性*/
        if(link[i].getAttribute("accesskey")){
            var key = "Alt+"+link[i].getAttribute("accesskey");
            /*获取快捷键跳转的页面名称*/
            var keyName = link[i].innerHTML+":";
            result[keyName] = key;

        }
    }

    /*创建节点*/
    for(name in result){
        /*创建列表项*/
        var li = document.createElement("li");
        /*创建说明*/
        var keyText = document.createTextNode(name+result[name]);
        /*添加内容*/
        li.appendChild(keyText);
        /*添加列表项*/
        ul.appendChild(li);
    }
}

创建网页目录

function addDirectory(){
    /*向后兼容*/
    if(!document.getElementsByTagName || !document.createElement || !document.createTextNode) return false;

    /*获取全部h1标签*/
    var h1 = document.getElementsByTagName("h1");
    /*创建目录*/
    var body = document.getElementsByTagName("body")[0];
    var ul = document.createElement("ul");
    var h2 = document.createElement("h2");
    var ulTitle = document.createTextNode("网页目录");
    h2.appendChild(ulTitle);
    ul.appendChild(h2);
    /*获取第一个有效节点   忽略空白*/
    var elem = body.children[0];
    body.insertBefore(ul,elem);

    /*遍历*/
    for(var i=0;i<h1.length;i++){
        /*创建新目录项*/
        var li = document.createElement("li");
        var item = document.createTextNode(h1[i].innerHTML);
        li.appendChild(item);
        ul.appendChild(li);
    }
}

获取紧挨着的元素节点

 /*使用环境:当我们想对一个元素的紧挨着的元素节点设置一些属性时
* 但是浏览器会有空白节点的存在
* 或者这个元素的第一个有效节点是文本节点
* 我们要忽略空白节点和文本节点  直接获取元素节点
* */
function getElement(node){
    /*如果这个节点是元素节点返回*/
    if(node.nodeType == 1){
        return node;
    }
    /*如果这个节点不是元素节点,接着查看下一个节点*/
    if(node.nextSibling) {
        return getElement(node.nextSibling);
    }
    /*如果都不是,返回空*/
    return null;
}

JS实现兼容性斑马线表格

function table(){
    if(!document.getElementsByTagName) return false;
    /*获取tbody*/
    var tbody = document.getElementsByTagName("tbody");
    var odd,rows;
    /*遍历*/
    for(var i=0;i<tbody.length;i++){
        odd = true;
        rows = tbody[i].getElementsByTagName("tr");
        /*遍历每一行*/
        for(var j=0;j<rows.length;j++){
            if(odd == true){
                rows[j].style.backgroundColor = "#e1e1e1";
                odd = false;
            }else{
                odd = true;
            }
        }
    }
}

JS实现表格悬浮高亮

/*表格悬浮高亮显示*/
function highLightTable(){
    if(!document.getElementsByTagName) return false;
    if(!document.getElementsByTagName("tr")) return false;

    /*获取全部的行*/
    var rows = document.getElementsByTagName("tr");
    for(var i=0;i<rows.length;i++){
        /*获取之前的样式  一个对象的属性的作用域是永久存在的
        * 所以oldClass不能使用变量存储
        * */
        rows[i].oldClass = rows[i].className;
        /*添加事件*/
        rows[i].onmouseover = function(){
            addClass(this,"highLightTable");
        };
        /*onmouseover对应onmouseout*/

        rows[i].onmouseout = function(){
            this.className = this.oldClass;
        }
    }
}

导航链接添加样式

大多数都会有导航栏一项,这里这样放置着当前页面能链接的所有同级页面,如下:

<nav>
    <ul>
         <li>
             <a href="index.html">Home</a>
         </li>
         <li>
             <a href="About.html">About</a>
         </li>
         <li>
             <a href="Photos.html">Photos</a>
         </li>
         <li>
             <a href="Live.html">Live</a>
         </li>
         <li>
             <a href="Contact.html">Contact</a>
         </li>
     </ul>
 </nav>

为了增加用户的体验性,通常会突出显示当前页面链接,通常在开发的时候,我们会采用服务器端包含的方法处理(将这一区域单独放在一个文件中,然后在不同页面中引用)如果增加导航栏项目时,只需要在这个文件中多添加一项即可,这一方法 的缺点就是,如果想改变某一个页面的导航栏样式是没法修改的,所以我们可以利用JavaScript代替服务器端包含,既可以突出显示当前页面链接,还可以根据页面的不同自定义设置导航栏的样式。代码如下:

function highLightPage(){
    /*思路:
    * 1、遍历所有nav中的连接
    * 2、比较nav连接的href是否是当前访问页面
    * 3、为匹配项添加样式
    * */

    /*向后兼容*/
    if(!document.getElementsByTagName) return false;
    if(!document.getElementById) return false;

    var header = document.getElementsByTagName("header");
    /*判断当前页面是否有头部*/
    if(header.length == 0) return false;
    /*获取nav导航栏*/
    var nav = header[0].getElementsByTagName("nav");
    /*判断是否有导航栏*/
    if(nav.length == 0) return false;
    /*获取链接*/
    var a = nav[0].getElementsByTagName("a");
    if(a.length == 0) return false;
    /*获取链接地址*/
    var linkURL;
    /*遍历*/
    for(var i=0;i< a.length;i++){
        /*获取地址*/
        linkURL = a[i].getAttribute("href");
        /*获取当前页面地址  使用window.location.href*/
        if(window.location.href.indexOf(linkURL) != -1){
            a[i].className = "here";
        }
    }
 }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值