• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Programmcode um 2 Sek. pausieren

dasmein

New member
Nabend,
Ich habe eine Listbox in der bestimmte Textinhalte nacheinander reingeschrieben werden sollen. Es soll jedoch nach einem Eintrag eine bestimmte Zeit vergehen bis der nächste Eintrag erfolgen soll. MaW: Der Programmcode soll an einer bestimmten Stelle entsprechend "pausiert" werden. Dazu bin ich im Netz über mehrere Funktionen gestoßen, die jedoch alle nicht zum gewünschten Effekt beigeholfen haben. Es findet zwar eine "Pause" statt, jedoch sehe ich erst ganz am Ende alle Einträge. Ich möchte es aber so haben, dass ich nach dem ersten Eintrag diesen Eintrag auch schon sofort sehe und nicht erst am Ende! Ich habe testweise mal was gebastelt:

Als Beispiel habe ich diese Funtion hier:
Code:
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <select id="lstbox" size="8" style="width: 300px" multiple="multiple">
    <input type="button" value="Write" onclick="Myfunction()">
</select>
<script>
    function Myfunction() {
        [B]Write();
        sleep(2000);
        Write();[/B]

        function Write() {
            var lstbox;
            var option;
            option = document.createElement("option");
            lstbox = document.getElementById("lstbox");
            option.text = "Text";
            lstbox.add(option);
        }
        function sleep(milliseconds) {
            var start = new Date().getTime();
            for (var i = 0; i < 1e7; i++) {
                if ((new Date().getTime() - start) > milliseconds) {
                    break;
                }
            }
        }
    }
</script>
</body>
</html>
Nach Aufruft von Write erfolgt die Pause. Ich möchte DANN aber schon den bzw. die bereits geschriebenen Einträge sehen. Wie stelle ich das am besten an ? Bedanke mich! =)
 
Das Problem liegt entweder an der syncronen oder asyncronen (so genau bin ich mir bei JS da nicht sicher) Ausführung des Codes???

Das kann man umgehen idem man zb setTimeout in recursiven Functionen verwendet.
Hier dein beispiel mit SetTO recursive verwendet.Der text wird 5x alle 2 Sec ausgegeben .
HTML:
<!DOCTYPE html >
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <select id="lstbox" size="8" style="width: 300px" multiple="multiple">
    <input type="button" value="Write" onclick="Myfunction(5)">
</select>
<script>
let xSet = 0;
   function Write() {
            var lstbox;
            var option;
            option = document.createElement("option");
            lstbox = document.getElementById("lstbox");
            option.text = "Text";
            lstbox.add(option);
			xSet++;
        }

function Myfunction(x) 
{
Write(); 
if(xSet < x){setTimeout(function(){Myfunction(x)},2000);} 
}
  
</script>
</body>
</html>
MFG
 
Zurück
Oben