這是一個應該打開和關閉我的網站菜單的代碼。菜單被劃分爲div,並且每個都被定時以在另一個之後進入屏幕。JS - 如何在函數結束時執行某些操作
<script type="text/javascript">
var s=0;
function menuOpen() {
if (s==0){
document.getElementById("menu_icon").src = "x.png";
document.getElementById("nav_menu").style.zIndex = "3";
$('.box-wrapper').each(function(index, element) {
setTimeout(function(){
element.classList.remove('loading');
}, index * 100);
});
s++;
} else {
document.getElementById("menu_icon").src = "menu_icon.png";
$('.box-wrapper').each(function(index, element) {
setTimeout(function(){
element.classList.add('loading');
}, index * 100);
});
s=0;
// how to make this part run after the menu has finished folding?
setTimeout(function(){
document.getElementById("nav_menu").style.zIndex = "1";
}, 1500);
}
}
</script>
在網頁的內容是在z軸折射率2.摺疊時的菜單爲1,並且當在打開3.
有一種方法來運行命令移動所述菜單Z-菜單完成摺疊後的索引1?
目前我所做的就是動畫(1600ms)並使用setTimeout。但是,如果我將更多行添加到我的菜單中,或者有人快速點擊菜單圖標,這個時間將會改變。
我是相當新的JS和jQuery這樣下去容易對我(:。
感謝您的幫助
你有兩個變種:1)創建取決於菜單項2的量將計算時間的setTimeout)閱讀關於異步的JavaScript的表達 – Nikita
如果你看劇本,你會看到我在做準確你在第一個選項中寫的是什麼。但是這導致了問題(如上所述),我正在尋找另一種解決方法。 – user1306732
我看到你手動設置了1500ms,但我建議數一數,f.e. 'timeout = amountMenuItems * timeNeedForMenuItem'然後設置計數值,所以如果你添加一個menuItem它仍然會工作並且改變timeNeed ...你可以設置速度,但是如果你的菜單項需要不同倍。 – Nikita