通過style.display來寫元素的顯示隱藏效果。第一次點擊希望它顯示竟然沒有效果。需要點2次的原因

點擊按鈕來顯示隱藏上面的aaaaaaa。

初始狀態他是隱藏的。

   

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <title></title>

    <style>

       #div{display:none}

    </style>

</head>

 

<body>

    <div class="top" id="div">

        aaaaaaaaaaaaaaaaaaa

    </div>

    <button id="btn">顯示</button>

    <script>

 

btn.οnclick=function(){

    var elem=document.getElementById("div");

    var btn=document.getElementById("btn");

    if(elem.style.display=="none"){

        btn.innerHTML="隱藏";

        elem.style.display="block";

    }else{

        btn.innerHTML="顯示";

        elem.style.display="none";

    }   

}    

</script>

</body>

</html>

 

 

這樣寫的話。就會出現第一次點擊無效。需要第二次點擊纔出現效果。這是爲什麼呢?

因爲elem.style.display這樣獲取的是elem元素的行內樣式。但是默認的行內沒有樣式的。所以他第一次點擊的時候就走了else。給他加了一個行內的樣式。然後再點擊就是正常需要的效果了、

 

那如何解決這個問題呢?看看下面的鏈接就知道啦

window.getComputedStyle() 方法的使用

 

btn.οnclick=function(){

    var elem=document.getElementById("div");

    var btn=document.getElementById("btn");

    if(window.getComputedStyle(elem, null).display=="none"){

        btn.innerHTML="隱藏";

        elem.style.display="block";

    }else{

        btn.innerHTML="顯示";

        elem.style.display="none";

    } 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章