JS之DOM API

一. 12中獲取節點的方法javascript

   

console.log(document.getElementById("dd").childNodes); //某節點所有子節點
    console.log(document.getElementById("dd").children);  //某元素的所有子元素
    console.log(document.getElementById("dd").parentNode); //某節點的父節點
    console.log(document.getElementById("dd").parentElement); //某元素的父元素
    /*
    * 前四個火狐谷歌IE都支持
    * 後面八個全部子節點IE8都當作子元素處理
    *
    *
    * */
    console.log(document.getElementById("dd").firstChild); //某節點的第一個子節點
    console.log(document.getElementById("dd").firstElementChild); //某元素的第一個子元素
    console.log(document.getElementById("dd").lastChild); //某節點的最後一個子節點
    console.log(document.getElementById("dd").lastElementChild); //某元素的最後一個子元素
    console.log(document.getElementById("dd").previousSibling); //某節點前一兄弟節點
    console.log(document.getElementById("dd").previousElementSibling); //某元素前一兄弟元素
    console.log(document.getElementById("dd").nextSibling); //某節點後一兄弟節點
    console.log(document.getElementById("dd").nextElementSibling); //某元素後一兄弟元素

二.IE8中子元素獲取方式兼容性處理   java

function getfirstElementChild(ele){
        if(typeof ele.firstElementChild!="undefined"){
            return ele.firstElementChild;
        }else {
            var obj=ele.firstChild;           // 獲取第一個子元素兼容性寫法
            while(obj.nodeType!=1){
                obj=obj.nextSibling;
            }
            return obj;
        }
    }
    console.log(getfirstElementChild(my$("dd")));

    function getlastElementChild(ele){
        if(typeof ele.lastElementChild!="undefined"){
            return ele.lastElementChild;
        }else {
            var obj=ele.lastChild;           // 獲取最後一個子元素兼容性寫法
            while(obj.nodeType!=1){
                obj=obj.previousSibling;
            }
            return obj;
        }
    }
    console.log(getlastElementChild(my$("dd")));

    function getpreviousElementSibling(ele){
        if(typeof ele.previousElementSibling!="undefined"){
            return ele.previousElementSibling;
        }else {
            var obj=ele.previousSibling;           // 獲取前一個子元素兼容性寫法
            while(obj.nodeType!=1){
                obj=obj.previousSibling;
            }
            return obj;
        }
    }
    console.log(getpreviousElementSibling(my$("dd")));

    function getnextElementSibling(ele){
        if(typeof ele.nextElementSibling!="undefined"){
            return ele.nextElementSibling;
        }else {
            var obj=ele.nextSibling;           // 獲取後一個子元素兼容性寫法
            while(obj.nodeType!=1){
                obj=obj.nextSibling;
            }
            return obj;
        }
    }
    console.log(getnextElementSibling(my$("dd")));

三.innerText和textContent兼容性處理node

function setInnerText(element,text){
        if(typeof element.textContent=="undefined"){

            element.innerText=text;
        }else{

        element.textContent=text;}
    }
    function getInnerText(element){
        if(typeof element.textContent=="undefined"){
            return element.innerText;
        }else
            return element.textContent;
    }

四.三種操做元素的方式json

my$("dv").insertBefore(obj,my$("dv").firstChild);        //在第一個元素前面追加元素
        my$("dv").removeChild(my$("dv").firstChild);             //刪除子元素                                 
        my$("dv").removeChild(my$("dv").firstChild);             //刪除所有子元素

五.爲事件添加處理函數和清除處理函數的兼容性代碼函數

function addEventListener(element,type,fn){  //fn只能用自定義函數傳值不能直接用匿名函數
        if(element.addEventListener){
            element.addEventListener(type,fn,false);
        }
        else{
            if(element.attachEvent){
                element.attachEvent(type,fn);
            }
            else{
                element["on"+type]=fn;
            }
        }
    }
    /*
    *
    * 事件處理函數的清除remove
    *
    * */
    function removeEventListener(element,type,fn){
        if(element.removeEventListener){
            element.removeEventListener(type,fn,false);
        }else if (element.attachEvent){
            element.attachEvent(type,fn);
            }else {
                element["on"+type]=null;
                }
    }

六.封裝scroll函數動畫

function GetScroll() {
        this.left=window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft
        || 0;
        this.top = window.pageYOffset|| document.documentElement.scrollTop || document.body.scrollTop
        || 0;
        this.mm =1;
    }

七.變速動畫函數封裝this

function animateC(element,json,fn){
    clearInterval(element.itd);
    element.itd=setInterval(function(){
        var tag=true;
        for(var key in json){
            if(key=="opacity"){
                var current=getStyle(element,key)*100; //得到當前元素屬性值
                var target=json[key]*100;
                var step=(target-current)/10;  //設置元素移動步數
                step=step>0?Math.ceil(step):Math.floor(step);
                current+=step;
                //噹噹前元素left<target時步數爲正不然爲負
                element.style[key]=current/100;
            }else if(key=="z-index"){
                element.style.zIndex=json[key];
            }else {//普通屬性值
                var current=parseInt(getStyle(element,key));//得到當前元素屬性值
                var target=json[key];
                var step=(target-current)/10;  //設置元素移動步數
                step=step>0?Math.ceil(step):Math.floor(step);
                current+=step;
                //噹噹前元素left<target時步數爲正不然爲負
                element.style[key]=current+"px";
            }
            if(current!=target)
                tag=false;
        }
        if (tag) {
            clearInterval(element.itd);
            if(fn){
                fn();
            }
        }//清除定時器

    },10);
}

八.勻速動畫函數封裝code

function animateD(element, json, fn) {
    var itd = setInterval(function () {
            var tag = true;
            for (var key in json) {
                if (key == "z-index") {
                    element[key] = json[key];
                }  else {
                    var current = element[key]; //得到當前元素left值
                    var bushu = 10;  //設置元素移動步數
                    var target = json[key];
                    current += current < target ? bushu : -bushu; //噹噹前元素left<target時步數爲正不然爲負
                    if (Math.abs(target - current) >= Math.abs(bushu)) {  //噹噹前元素left與target差值大於步數時
                        element.style.left = current + "px"; //賦值元素left爲current
                    } else {
                        element.style.left = target + "px"; //賦值元素left爲target
                    }
                }
                if (current != target)
                    tag = false;
            }
            if (tag) {
                clearInterval(itd);
                if (fn)
                    fn();
            }
        }
    );
}

九.獲取當前元素的pageX和pageY的兼容性處理事件

function PageXY(e)  {
    this.getEvt=function(){
        return e || window.event;
    }
    this.getScrollX=function(){
        return e.scrollLeft? e.scrollLeft:window.pageXOffset || (window.documentElement&&window.documentElement.scrollLeft) ||
        document.body.scrollLeft || 0;  //e.scrollLeft-->谷歌適用
    }
    this.getScrollY=function(){
        return e.scrollTop? e.scrollTop:window.documentElement&&window.documentElement.scrollTop ||
        window.pageYOffset || document.body.scrollTop || 0;
    }
    this.getPageX=function () {
        return e.pageX? e.pageX:this.getEvt(e).clientX +this.getScrollX(e);
    }

    this.getPageY=function () {
        return e.pageY? e.pageY:this.getEvt(e).clientY +this.getScrollY(e);
    }
};
相關文章
相關標籤/搜索