首頁  >  問答  >  主體

javascript - settimeout中傳入參數的問題

<body>
    <p class="nav">
        <ul class="nav_level_1">
            <li><a href="#">首页</a></li>
            <li><a href="#">课程大厅</a>
                <ul class="nav_level_2">
                    <li><p class="corn"></p></li>
                    <li><a href="#">JavaScript</a></li>
                    <li><a href="#">JQuery</a></li>
                </ul>
            </li>
            <li><a href="#">学习中心</a></li>
            <li><a href="#">经典案例</a></li>
            <li><a href="#">关于我们</a></li>
        </ul>
    </p>
    <script type="text/javascript">
    window.onload = function(){
        var nav_level_1 = document.getElementsByClassName("nav_level_1")[0],
            lis_1 = nav_level_1.children;
            for(var i = 0;i < lis_1.length;i++){
                lis_1[i].onmouseover = function(){
                    var ul = this.getElementsByClassName("nav_level_2")[0];
                    addHeight(ul);
                }

            }
    }
    function addHeight(ul){
        var ul_height = ul.offsetHeight;
        ul_height++;
        if(ul_height <= 95){
            ul.style.height = ul_height + "px";
            setTimeout("addHeight('"+ul+"')",10);
        }else{
            return;
        }
    }
    </script>
</body>

用settimeout寫二級選單的展開收縮,在settimeout中傳入一個帶有參數的函數,不知道怎麼傳,影片中是這樣寫的setTimeout("addHeight('" ul "')",10 )但是不太正常,請問是什麼原因?

三叔三叔2663 天前802

全部回覆(2)我來回復

  • 某草草

    某草草2017-07-05 11:08:49

    雷雷

    回覆
    0
  • 漂亮男人

    漂亮男人2017-07-05 11:08:49

    setTimeout 這個函數第一個參數可以接受一個 函數 或 一段程式碼,如果是程式碼,則將它放進eval執行。

    你這裡的寫法就是一段程式碼的寫法,你檢查一下引號的書寫,是不是一一對應的寫的正確。或是換成下面的兩個寫法都應該可以正常運作

    setTimeout(function () {
        addHeight(ul)
    }, 10);
    setTimeout(addHeight, 10, ul)

    回覆
    0
  • 取消回覆