ich ein Element ausblenden möge, und ein neues Element nach einer Sekunde angezeigt werden,JavaScript-Funktionen nicht in der richtigen Reihenfolge mit Schlaf ausgeführt
hier ist der vereinfachte Code:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
function loadNewSubmenu()
{
document.getElementById("content-1").className = "hide-part";
sleep(1000);
document.getElementById("content-2").className = "show-part";
}
.hide-part{
display : none;
}
<button id="content-1" class="show-part">B1</button>
<button id="content-2" class="hide-part">B2</button>
<button onclick="loadNewSubmenu()">click me</button>
Was ich erwartet:
- ausblenden Element
#content-1
- Warten Sie eine Sekunde
- Zeigen Sie das Element
#content-2
Aber das ist, was ich habe:
- Eine zweite Warte
- Element
#content-1
geändert
- Ele
#content-2
ment geändert
Ich weiß, dass ich setTimeout
es beheben können, aber was ist der Grund für dieses Verhalten?
Verwenden' sleep' nicht aber 'setTimeout'. Und Sie haben zwei Elemente mit derselben ID, das ist falsch. – Oen44
Mögliches Duplikat von [Was ist die JavaScript-Version von sleep()?] (Http://stackoverflow.com/questions/951021/what-is-the-jascript-version-of-sleep) – Andreas
Mögliches Duplikat von [Reveal a div nach x Sekunden, und ein weiteres div nach y Sekunden] (http://stackoverflow.com/questions/18808383/reveal-a-div-after-x-seconds-and-reveal-another-div-after-y- Sekunden) oder [CSS Elemente automatisch nach 5 Sekunden ausblenden] (http://stackoverflow.com/questions/21993661/css-auto-hide-elements-after-5-seconds) – Aria