Schreibe Funktion Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schreibe Funktion Problem

    Ich habe ein Problem mit meiner Programmierten schreibe Funktion (JS(Javascript)).

    Eigentlich (!), funktioniert mein geschriebener Skript einwandfrei,... (ich zeig erstmal den code)

    Quellcode

    1. <script type="text/javascript">
    2. function wait(ms)
    3. {
    4. var zeit, ende;
    5. zeit = (new Date()).getTime();
    6. ende = zeit+ms;
    7. while ((new Date()).getTime() < ende) {}
    8. }
    9. function schreiben(divid, text)
    10. {
    11. var counter, ende, _split;
    12. counter = 0;
    13. ende = text.length;
    14. _split = text.split("");
    15. while (counter < ende)
    16. {
    17. document.getElementById(divid).innerHTML += _split[counter];
    18. ++counter;
    19. wait(200);
    20. }
    21. }
    22. </script>
    Alles anzeigen


    So,... soweit so gut.
    Jetzt aber das Problem:

    Wenn ich jetzt die Funktion aufrufe, hängt der Browser sich kurz auf und dan erscheind der ganze Text.
    Wie lange der Browser sich aufhängt, hängt von der Funktion wait() ab, => größere Werte, längeres aufhängen.

    Wenn ich aber dazwischen immer ein alert mache, hängt sich der Skript nicht auf, und man sieht wie es geschrieben wird, jedoch hat man dann auch immer ein Nachrichtenfenster offen ~.~!

    Wäre nett, wenn mir jemand erklären könnte warum sich dass aufhängt, obwohl da ja ganz eindeutig steht das der Skript erst immer ein Buchstabe schreiben soll, und dann 200 MS warten soll.

    MFG
    Metalknight
  • Um eine Aktion erst nach einer bestimmten Zeit auszuführen bietet JS die Funktionen setTimeout und setInterval.
    Hier erfährst du mehr darüber: de.selfhtml.org/javascript/objekte/window.htm#set_interval

    Damit kannst du nach einer bestimmten Zeit JS-Code ausführen lassen oder sogar regelmäßig. Natürlich musst du deine Funktionen dementsprechend umbauen, damit du mit setTimeout und co. arbeiten kannst.
  • Okay, danke =DDD

    habs mit setInterval gemacht ^^

    Meine Lösung:

    Quellcode

    1. <script type="text/javascript">
    2. var text, counter, ende, _split, divid;
    3. text = "Dies ist ein einfacher Text ^^ - der sich selbst schreibt!";
    4. counter = 0;
    5. ende = text.length;
    6. _split = text.split("");
    7. divid = "text";
    8. function schreiben(divid)
    9. {
    10. if (counter < ende)
    11. {
    12. document.getElementById(divid).innerHTML += _split[counter];
    13. ++counter;
    14. }
    15. }
    16. setInterval("schreiben(divid);",100);
    17. </script>
    Alles anzeigen


    (und im body, anstadt im head)

    Klappt 1a ^^

    Edit:
    Boah, wenn ich mal eins sagen darf, warum sieht der Code (ob GML oda was anderes) immer so komisch aus, wenn man den hier einfügt 8|
  • Toshiro schrieb:


    Metalknight schrieb:

    Edit:
    Boah, wenn ich mal eins sagen darf, warum sieht der Code (ob GML oda was anderes) immer so komisch aus, wenn man den hier einfügt 8|


    Wieso komisch ?( Sieht doch (fast) genauso aus wie der GML-Editor im Game Maker?
    Ich mein die Einrückungen.
    Die sind immer so komisch, wenne den Code bei mir im Notepad++ siehst, und hier im Forum, sieht das voll komisch aus 8|
  • Benutzer online 1

    1 Besucher