javascript - Pourquoi l'animation glisse-t-elle très lentement? Est-ce un problème avec offsetHeight?
大家讲道理
大家讲道理 2017-05-19 10:14:45
0
2
653
<!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>

Si la souris glisse rapidement dessus, l'animation sortira lentement
·TypeError : null n'est pas un objet (évaluation de 'ulList.offsetHeight')·

大家讲道理
大家讲道理

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

répondre à tous(2)
仅有的幸福
setTimeout("AddH(' "+id+"')",10);

AddH(' Il y a un espace supplémentaire à la fin, donc l'identifiant assemblé par mnuUL que vous obtenez a un espace supplémentaire devant lui, ce qui entraîne que l'identifiant suivant ne soit pas obtenu et qu'une erreur soit signalée

Impossible de lire la propriété 'offsetHeight' de null

迷茫

Il est recommandé d'utiliser l'animation CSS3 à la place. Il est difficile pour l'animation du minuteur js de garantir que la fréquence d'images est cohérente dans chaque environnement.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal