javascript - settimeout中傳入參數的問題
問題描述
<body> <p class='nav'><ul class='nav_level_1'> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>首頁</a></li> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>課程大廳</a><ul class='nav_level_2'> <li><p class='corn'></p></li> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>JavaScript</a></li> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>JQuery</a></li></ul> </li> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>學習中心</a></li> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>經典案例</a></li> <li><a href='http://www.lshqa.cn/wenda/4071.html#'>關于我們</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)但是不太正常,請問是什么原因?
問題解答
回答1:setTimeout(function () {addHeight(ul)},10);回答2:
setTimeout 這個函數第一個參數可以接受一個 函數 或者 一段代碼,如果是代碼,則將它放進eval執行。
你這里的寫法就是一段代碼的寫法,你檢查一下引號的書寫,是不是一一對應的寫的正確。或者換成下面的兩個寫法都應該可以正常工作
setTimeout(function () { addHeight(ul)}, 10);
setTimeout(addHeight, 10, ul)
相關文章:
1. javascript - 按鈕鏈接到另一個網址 怎么通過百度統計計算按鈕的點擊數量2. sql語句 - 如何在mysql中批量添加用戶?3. mysql 可以從 TCP 連接但是不能從 socket 鏈接4. mysql - PHP定時通知、按時發布怎么做?5. 怎么php怎么通過數組顯示sql查詢結果呢,查詢結果有多條,如圖。6. mysql - JAVA怎么實現一個DAO同時實現查詢兩個實體類的結果集7. 事務 - mysql共享鎖lock in share mode的實際使用場景8. mysql建表索引問題求助9. mysql - 數據庫建字段,默認值空和empty string有什么區別 11010. mysql 非主鍵做范圍查找實現原理的一點困惑
