日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

中國最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

json教程

  • 關(guān)于 JSON
  • JSON 教程

    json格式

    JSON解析

    JSON遍歷

    JSON調(diào)用

    JSON轉(zhuǎn)換

    JSON獲取

    JSON字符串

    JSON數(shù)組

    js獲取json元素數(shù)量的方法

    閱讀 (3831)

    本文實例講述了js獲取json元素數(shù)量的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

    代碼如下:
    <script>
    var keleyijson={"plug1":"myslider","plug2":"zonemenu","plug3":"javascript"}
    
    function JSONLength(obj) {
    var size = 0, key;
    for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
    }
    return size;
    };
    document.write("json對象的元素個數(shù)是:"+JSONLength(keleyijson));
    </script>
    

    效果如下:

    json對象的元素個數(shù)是:3


    JavaScript獲取元素尺寸和大小操作總結(jié)

    本文總結(jié)了使用JavaScript獲取指定元素大小、位置的幾種方式。如果你用的是JQuery,則獲取元素大小是非常簡單的。但是我們還是有必要知道如何通過原生JavaScript來獲取,需要的朋友可以參考下


    一、獲取元素的行內(nèi)樣式

    代碼如下:
    var obj = document.getElementById("test");
    alert(obj.height + "\n" + obj.width);
    // 200px 200px typeof=string只是將style屬性中的值顯示出來
    

    二、獲取計算后的樣式

    代碼如下:
    var obj = document.getElementById("test");
    var style = null;
    if (window.getComputedStyle) {
        style = window.getComputedStyle(obj, null);    // 非IE
    } else { 
        style = obj.currentStyle;  // IE
    }
    alert("width=" + style.width + "\nheight=" + style.height);
    

    注意:如果不設(shè)置元素的寬度和高度,那么在非IE瀏覽器下返回默認的寬度和高度。在IE下面返回auto字符串


    三、獲取<link>和<style>標簽寫入的樣式

    代碼如下:
    var obj = document.styleSheets[0]; // [object StyleSheetList] 樣式表的個數(shù)<link>var rule = null;// [object CSSRule]
    if (obj.cssRules){
        rule = obj.cssRules[0];  // 非IE [object CSSRuleList]
    } else {
        rule = obj.rules[0];     // IE [object CSSRuleList]
    } 
    alert(rule.style.width);
    

    cssRules(或rules)只能獲取到內(nèi)聯(lián)和鏈接樣式的寬和高,不能獲取到行內(nèi)和計算后的樣式。

    總結(jié):以上的三種CSS獲取元素大小的方法,只能獲取元素的CSS大小,卻無法獲取元素本身實際的大小。比如加上了內(nèi)邊距、滾動條、邊框之類的。


    四、獲取元素的實際大小

    1. clientWidth和clientHeight
        這組屬性可以獲取元素可視區(qū)的大小,可以得到元素內(nèi)容及內(nèi)邊距所占據(jù)的空間大小。返回了元素大小,但沒有單位,默認單位是px,如果你強行設(shè)置了單位,比如100em之類,它還是會返回px的大小。(CSS獲取的話,是照著你設(shè)置的樣式獲取)。對于元素的實際大小,clientWidth和clientHeight理解方式如下:
        a. 增加邊框,無變化;
        b. 增加外邊距,無變化;
        c. 增加滾動條,最終值等于原本大小減去滾動條的大??;
        d. 增加內(nèi)邊距,最終值等于原本大小加上內(nèi)邊距的大??;


    代碼如下:
    <div id="test"></div>
    #test{
        background-color: green;
        width: 200px;
        height: 200px;
        border: solid 5px red;  /* 對應(yīng)a理解,結(jié)果:200,200 */
        margin: 10px;  /* 對應(yīng)b理解,結(jié)果:200,200*/
        padding: 20px;  /* 對應(yīng)c理解,結(jié)果:240,240*/
        overflow: scroll;  /* 對應(yīng)d理解,結(jié)果:223,223,223=200(css大?。?40(兩邊內(nèi)邊距)-17(滾動條寬度)*/
    }
    window.onload = function(){
        var obj = document.getElementById("test");
        alert(obj.clientWidth + "," + obj.clientHeight);
    };
    

    注意:如果說沒有設(shè)置任何CSS的寬和高度,那么非IE瀏覽器會算上滾動條和內(nèi)邊距的計算后的大小,而IE瀏覽器則返回0(IE8已修復(fù))。

    2. scrollWidth和scrollHeight
        這組屬性可以獲取滾動內(nèi)容(可見內(nèi)容)的元素大小。返回了元素大小,默認單位是px。如果沒有設(shè)置任何CSS的寬和高度,它會得到計算后的寬度和高度。對于元素的實際大小,scrollWidth和scrollHeight理解如下:
        1. 增加邊框,不同瀏覽器有不同解釋(下面在IE8中運行正常,IE6運行不正常):
             a) Firefox和Opera瀏覽器會增加邊框的大小,220x220
           b) IE、Chrome和Safari瀏覽器會忽略邊框大小,200x200
           c) IE瀏覽器只顯示它本來內(nèi)容的高度,200x18(IE8已經(jīng)修改該問題)
        2. 增加內(nèi)邊距,最終值會等于原本大小加上內(nèi)邊距大小,220x220,IE為220x38
        3. 增加滾動條,最終值會等于原本大小減去滾動條大小,184x184,IE為184x18
        4. 增加外邊據(jù),無變化。
        5. 增加內(nèi)容溢出,F(xiàn)irefox、Chrome和IE獲取實際內(nèi)容高度,Opera比前三個瀏覽器獲取的高度偏小,Safari比前三個瀏覽器獲取的高度偏大。

    3. offsetWidth和offsetHeight
        這組屬性可以返回元素實際大小,包含邊框、內(nèi)邊距和滾動條。返回了元素大小,默認單位是px。如果沒有設(shè)置任何CSS的寬和高度,他會得到計算后的寬度和高度。對于元素的實際大小,offsetWidth和offsetHeight理解如下:
        1.增加邊框,最終值會等于原本大小加上邊框大小,為220;
        2.增加內(nèi)邊距,最終值會等于原本大小加上內(nèi)邊距大小,為220;
        3.增加外邊據(jù),無變化;
        4.增加滾動條,無變化,不會減小;
        對于元素大小的獲取,一般是塊級(block)元素并且以設(shè)置了CSS大小的元素較為方便。如果是內(nèi)聯(lián)元素(inline)或者沒有設(shè)置大小的元素就尤為麻煩,所以,建議使用的時候注意。

    代碼如下:
    <div id="test">test div element</div>
    #test{
        background-color: green;
        width: 200px;
        height: 200px;
        border: solid 10px red; /*結(jié)果:220,220*/
        margin: 10px; /*結(jié)果:220,220(無變化)*/
        padding: 10px; /*結(jié)果:240,240*/
        overflow:scroll; /*結(jié)果:240,240(無變化)*/
    }
    window.onload = function(){
        var obj = document.getElementById("test");
        alert(obj.offsetWidth + "," + obj.offsetHeight);
    };
    
    
    

    五、獲取元素周邊大小
    1. clientLeft和clientTop獲取邊框大小
        這組屬性可以獲取元素設(shè)置了左邊框和上邊框的大小。目前只提供了Left和Top這組,并沒有提供Right和Bottom。如果四條邊寬度不同的話,可以直接通過計算后的樣式獲取,或者采用以上三組獲取元素大小的減法求得。
    右邊框的寬度:obj.offsetWidth-obj.clientWidth-obj.clientLeft
    底邊框的寬度:obj.offsetHeight-obj.clientHeight-obj.clientTop

    代碼如下:
    <div id="test">test div element</div>
    #test{
        background-color: green;
        width: 200px;
        height: 200px;
        border-top: solid 10px red;s
        border-right: solid 20px #00ff00;
        border-bottom: solid 30px blue;
        border-left: solid 40px #808080; 
    }
    window.onload = function(){
        var obj = document.getElementById("test");
        alert(obj.clientLeft + "," + obj.clientTop); // 40,10
    };
    

    2. offsetLeft和offsetTop    
        這組屬性可以獲取當前元素相對于父元素的位置。獲取元素當前相對于父元素的位置,最好將它設(shè)置為定位position:absolute;否則不同的瀏覽器會有不同的解釋。
        a、將position設(shè)置為absolute,則所有瀏覽器返回一樣的值。如:

        代碼如下:
    <div id="test">test div element</div>
        #test {
            background-color: green;
            width: 200px;
            height: 200px;
            position: absolute;
            left: 30px;
            top: 20px;
        }
            window.onload = function(){
            var obj = document.getElementById("test");
            alert(obj.offsetLeft + "," + obj.offsetTop); // 30, 20
        };
    

         b、加上邊框和內(nèi)邊距不會影響它的位置,但加上外邊據(jù)會累加。

    3、box.offsetParent得到父元素
    offsetParent中,如果本身父元素是<body>,非IE返回body對象,IE(IE6)返回html對象。如果兩個元素嵌套,如果上父元素沒有使用定位position:absolute,那么offsetParent將返回body對象或html對象。所以,在獲取offsetLeft和offsetTop時候,CSS定位很重要。

    如果說,在很多層次里,外層已經(jīng)定位,我們怎么獲取里層的元素距離body或html元素之間的距離呢?也就是獲取任意一個元素距離頁面上的位置。那么我們可以編寫函數(shù),通過不停的向上回溯獲取累加來實現(xiàn)。

    代碼如下:
    box.offsetTop + box.offsetParent.offsetTop;     // 只有兩層的情況下
     
    function offsetLeft(element){
        var left = element.offsetLeft; // 得到第一層距離
        var parent = element.offsetParent; // 得到第一個父元素
        while (parent !== null) { // 如果還有上一層父元素
            left += parent.offsetLeft; // 把本層的距離累加
            parent = parent.offsetParent; // 得到本層的父元素
        } //然后繼續(xù)循環(huán)
        return left;
    }
    

    4.scrollTop和scrollLeft
        這組屬性可以獲取滾動條被隱藏(滾動條上方區(qū)域)的區(qū)域大小,也可設(shè)置定位到該區(qū)域。如果要讓滾動條滾動到最初始的位置,那么可以寫一個函數(shù):

    代碼如下:
    function scrollStart (element) {
        if ( element.scrollTop != 0 ) {
            element.scrollTop = 0;
        }
    }
    

    5、getBoundingClientRect()
    這個方法返回一個矩形對象,包含四個屬性:left、top、right和bottom。分別表示元素各邊與頁面上邊和左邊的距離。

    代碼如下:
    var box=document.getElementById('box');     // 獲取元素
    alert(box.getBoundingClientRect().top);         // 元素上邊距離頁面上邊的距離
    alert(box.getBoundingClientRect().right);       // 元素右邊距離頁面左邊的距離
    alert(box.getBoundingClientRect().bottom);  // 元素下邊距離頁面上邊的距離
    alert(box.getBoundingClientRect().left);         // 元素左邊距離頁面左邊的距離
    

    注意:IE、Firefox3+、Opera9.5、Chrome、Safari支持,在IE中,默認坐標從(2,2)開始計算,導(dǎo)致最終距離比其他瀏覽器多出兩個像素,我們需要做個兼容。

    代碼如下:
    document.documentElement.clientTop; //非IE為0,IE為2
    document.documentElement.clientLeft; //非IE為0,IE為2
    functiongGetRect (element) {
        var rect = element.getBoundingClientRect();
        var top = document.documentElement.clientTop;
        var left= document.documentElement.clientLeft;
        return{
            top  :   rect.top - top,
            bottom  :   rect.bottom - top,
            left  :   rect.left - left,
            right  :    rect.right - left
        }
    }
    

    分別加上外邊據(jù)、內(nèi)邊距、邊框和滾動條,用于測試所有瀏覽器是否一致。


    關(guān)閉
    程序員人生
    主站蜘蛛池模板: 一级毛片成人免费看a | 欧美激情五月婷婷 | 色五月成人 | 91精品国产色综合久久不卡蜜臀 | 欧美激情综合五月色丁香小说 | 国产在线精品二区 | 国产玖玖 | 香蕉伊人 | 欧美久久一级 | 久久国产精品二区 | 欧美在线视频a | 成人免费在线电影 | 亚洲色图p | 一区二区视屏 | 欧美精品www| 久久婷婷国产麻豆91天堂徐州 | 午夜久久久久久久久久一区二区 | 久久久久成人精品 | 久热中文| 成人性生交大片免费看在线播放 | 91精品国产福利一区二区三区 | 久久久久久久久久久网站 | 91精品国产99 | 激情成人黄色 | 97国产在线 | 成人精品一区二区三区校园激情 | 久久国产精品偷 | 久久成人一区二区 | 日韩91| 香蕉av777xxx色综合一区 | 欧美在线视频网 | 国产精品久久久久久a | 国产精品久久久久国产a级 在线观看av网站 | 亚洲视频免费观看 | 国产精品日韩三级 | 国产一级精品视频 | 午夜精品久久 | 午夜精品电影 | 国产精品久久久久婷婷二区次 | 精品久久乐 | 亚洲精品一区二区三区在线观看 |