• 常用js函数收录


    一、函数页面加载addLoadEvent()

    由于window.onload只能绑定一条指令,当有多条指令被绑定时,只会有最后的那个函数被实际执行。对此,我们有两个解决方法:

    (1)先创建一个匿名函数来容纳这两个函数

    window.onload=function{
    firstFunction();
    secondFunction();
    }
    

      这个方法在不是很多函数的情况下可以很好的工作,但是一般我们更加建议使用法二

    (2)addLoadEvent函数

    该函数的伪代码:

    1.把现有的window.onload事件处理函数的值存入变量oldonload

    2.如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它

    3.如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾

    该函数代码如下:

    function addLoadEvent(func){
    var oldonload=window.onload;
    if(typeof window.onload!='function'){
    window.onload=func;
    }
    else{
    window.onload=function(){
    oldonload();
    func();
    }
    }
    }
    

      说明:这将把那些在页面加载完毕时执行的函数创建为一个队列。如果想要添加新函数,只需要执行以下两行:

    addLoadEvent(firstFunction);
    addLoadEvent(secondFunction);
    

      

    二、在元素后面插入元素insertAfter():

    js函数只提供了insertBefore(),可是却没有提供insertAfter,但是它给了我们编写该函数的所有工具

    该函数伪代码:

    (1)获取目标元素的父节点

    (2)判断目标元素的父节点的最后一个子节点是否是目标元素,若是,则直接把新元素添加到其父节点上

    (3)否则,利用insertBefore把新元素插入到目标元素的下一个兄弟节点的前面

    function insertAfter(newElement,parentNode){
    
    var parent=targetElement.parentNode;
    
    if(parent.lastChild==targetElement){
    
    parent.appendChild(newElement);
    
    }
    
    else{
    
    parent.insertBefore(newElement,targetElement.nextSibling);
    
    }
    
    }
    

      

    3.getHTTPObject(),用Ajax创建XMLHTTPRequest对象

    不同IE版本中使用的XMLHTTP对象也不完全相同,为了兼容所有浏览器,函数应当这样写:

    function getHTTPObject(){
    
    if(typeof XMLHttpRequest=="undefined")
    
    XMLHttpRequest=function(){
    
    try{return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
    
    catch(e){}
    
    try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");}
    
    catch(e){}
    
    try{return new ActiveXObject("Msxml2.XMLHTTP");}
    
    catch(e){}
    
    return false;
    
    }
    
    return new XMLHttpRequest();
    
    }
    

      这样,在我们编写脚本需要创建XMLHTTP对象的时候,就可以使用以下语句:

    var request=getHttpObject();
    

      

    4.js动画,移动目标元素moveElement()

    伪代码如下:

    (1)获得元素的当前元素

    (2)如果元素已经到达它的位置,则退出这个函数

    (3)如果元素尚未达到它的目的地,则把它向目的地移近一点儿

    (4)经过一段时间间隔之从步骤1开始重复上述步骤

    function moveElement(elementID,final_x,final_y,internal){
    if(!document.getElementById) return false;
    if(!document.getElementById(elementID)) return false;
    var elem=document.getElementById(elementID);
    if(element.movement){
    clearTimeout(elem.movement);
    }//利用与当前元素的直接相关的属性来清除movement指令,避免用户在多次反复调用movement函数时导致元素同时往多个方向进行移动而产生错误
    if(!elem.style.left){
    elem.style.left="0px";
    }
    if(!elem.style.top){
    elem.style.top="0px";
    }//判断目标元素是否有设置定位,没有则默认定位到top:0; left:0;处
    var xpos=parseInt(elem.style.left);
    var ypos=parseInt(elem.style.top);//在这个函数中要进行多次的数值比较,而elem.style.left和elem.style.top返回的则是“XXpx”这样一个字符串,所以要使用parseInt来转换
    var dist=0;
    if(xpos==final_x&&ypos==final_y){
    return false;
    }//如果目标元素已经到达目标点,则退出函数
    if(xpos<final_x){
    dist=Math.ceil((final_x-xpos)/10);//ceil方法使得数值朝大于方向获取最为接近的整数
    xpos=xpos+dist;
    }
    if(xpos>final-x){
    dist=Math.ceil((xpos-final_x)/10);
    xpos=xpos+dist;
    }
    if(ypos<final_y){
    dist=Math.ceil((final_y-ypos)/10);
    ypos=ypos+dist;
    }
    if(ypos>final_y){
    dist=Math.ceil((ypos-final_y)/10);
    ypos=ypos+dist;
    }
    elem.style.left=xpos+"px";
    elem.style.top=ypos+"px";
    var repeat="moveElement('"+elementTD"+',"+final_x+","+final_y+","+internal+")";//因为setTimeout函数的第一个参数值为字符串,所以repeat需要参数拼接起来的字符串
    elem.movement=setTimeout(repeat,interval);
    }
    

     

    5.添加类:addClass()

    有时候为了动态的给网页添加样式,我们常常通过给目标元素添加特定的类名来设置样式:

    伪代码如下:

    (1)判断目标元素是否有类名,若没有,则直接把value赋值给目标元素

    (2)如果有类名,则将将原类名赋值给一个新变量,然后再给这个新变量赋值一个空格和要添加的类名,最后再把这个新变量赋值给目标元素的类名属性

    function addClass(element,value){
    if(!element.className){
    element.className=value;
    }else{
    newClassName=element.className;
    newClassName+=" ";
    newClassName+=value;
    element.className=newClassName;
    }
    }
    

      

     

     6.表格的增强显示:stripeTables()和highlightRows()

    代码如下:

    function stripeTables(){
    if(!document.getElementByTagName) return false;
    var tables=document.getElementsByTagName("table");
    for(var i=0;i<tables.length;i++){
    var odd=false;//定义一个全局变量,进行一次循环就更替一次值,使得表格行的样式间隔改变
    var rows=tables[i].getElementsByTagName("tr");
    for(var j=0;j<rows.length;j++){
    if(odd=true){
    addClass(rows[j],"odd");
    odd=false;
    }else{
    odd=true;
    }
    }
    }
    }

    function highlightRows(){
    if(!document.getElementsByTagName) return false;
    var rows=document.getElementsByTagName("tr");
    for(var i=0;i<rows.length;i++){
    rows[i].oldClassName=rows[i].className;
    rows[i].onmouseover=function(){//鼠标移至目标元素上方时改变添加类名
    addClass(this,"highlight");
    }
    rows[i].onmouseout=function(){
    this.className=this.oldClassName;//鼠标移开目标元素时恢复原类名
    }
    }
    }

      

  • 相关阅读:
    Jquery 公告 滚动+AJAX后台得到数据。
    图片上添加文字。
    javascript的window.onload与jquery的$(document).ready()
    后台JS写法
    Ajax xmlhttprequest原理(一)
    SQL语句二次排序。先根据是否置顶字段。再根据最后更新时间排序。
    引以为戒的SQL语句写法
    C#中var关键字怎么用 ~
    上传文件 解析
    简易公告
  • 原文地址:https://www.cnblogs.com/runhua/p/6436163.html
Copyright © 2020-2023  润新知