javascript - Mengapa animasi slaid keluar dengan perlahan Adakah masalah dengan offsetHeight?
大家讲道理
大家讲道理 2017-05-19 10:14:45
0
2
655
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<style type="text/css">
    .top-nav {
        font-size: 14px;
        font-weight: bold;
        list-style: none;
    }
    .top-nav li {
        float: left;
        margin-left: 1px;
    }
    .top-nav li a {
        line-height: 34px;
        text-decoration: none;
        background: #3f240e;
        color: #fff;
        display: block;
        width: 80px;
        text-align: center;
    }
    .top-nav ul {
        list-style: none;
        display: none;
        padding: 0;
        position: absolute;
        height: 0;
        overflow: hidden;
    }    
    .top-nav li a:hover {
        background: url(images/slide-bg.png) 0 0 repeat-x;
    }
    .note {
        color: #3f240e;
        display: block;
        background: url(images/slide-bg.png) 0 0 repeat-x;
    }
    .corner {
        display: block;
        height: 11px;
        background: url(images/corner.png) 31px 0 no-repeat;
    }
</style>

<script type="text/javascript">
     window.onload = function() {
         var Lis = document.getElementsByTagName("li");
         for(var i=0; i<Lis.length; i++) {
             Lis[i].onmouseover = function() {
                 var u = this.getElementsByTagName("ul")[0];
                 if(u != undefined) {
                 u.style.display = "block";
                 AddH(u.id);    
                 }
                 
             }

             Lis[i].onmouseleave = function() {
                 var u = this.getElementsByTagName("ul")[0];
                 if(u != undefined) {
                 SubH(u.id);    
                 }
                 
             }
         }
     }
    function AddH(id) {
        var ulList = document.getElementById(id);
        var h = ulList.offsetHeight;
        h+=1;
        if(h<43) {
            ulList.style.height = h + "px";
            setTimeout("AddH(' "+id+"')",10);
        }
        else {
            return;
        }
        
    }

    function SubH(id) {
        //setTimeout();
    }
</script>

<body>
    <ul class="top-nav">
    <li><a href="#"><span class="note">慕课网</span></a></li>
    <li><a href="#">课堂大厅</a></li>
    <li><a href="#">学习中心</a>
    <ul id="mnuUL">
        <span class="corner"></span>
        <li><a href="#">前端课程</a></li>
        <li><a href="#">手机开发</a></li>
        <li><a href="#">后台编程</a></li>
    </ul>
    </li>
    <li><a href="#">关于我们</a></li>
    </ul>
</body>
</html>

Jika tetikus meluncur ke sana ke mari dengan cepat, animasi akan keluar perlahan-lahan
·TypeError: null bukan objek (menilai 'ulList.offsetHeight')·

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(2)
仅有的幸福
setTimeout("AddH(' "+id+"')",10);

AddH(' Terdapat ruang tambahan pada penghujungnya, jadi id yang dipasang oleh mnuUL yang anda dapat mempunyai ruang tambahan di hadapannya, menyebabkan id seterusnya tidak diperoleh dan ralat dilaporkan #🎜 🎜#

Tidak boleh membaca sifat 'offsetHeight' null

迷茫

Adalah disyorkan untuk menggunakan animasi CSS3 sebaliknya Agak sukar bagi animasi pemasa js untuk memastikan kadar bingkai adalah konsisten dalam setiap persekitaran.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan