krassy: for-Schleife mit Taste abbrechen

Hallo,

Wie kann man den Durchlauf einer for-Schleife per Taste, in javascript, verhindern?

Das geht nicht:

<HTML>

<BODY>
<input name=start type=button value="start" onClick=s()>
<input name=stop type=reset value="stop">
</BODY>

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
m = new Array();

function s() {
 for(var i=0; i<47; i++) {
  m[i] = document.createElement("embed");
  m[i].src =  "Beispiel.gif";
  m[i].id = i;
  document.body.appendChild(m[i]);

if( ... .event.keyCode == 0) break;     // <-------<<
 }
 alert("end !!!");
}
</SCRIPT>
</HTML>

Danke,
Krassy

  1. Hi,

    Wie kann man den Durchlauf einer for-Schleife per Taste, in javascript, verhindern?

    Gar nicht, weil die Schleife erst mal durchlaeuft, bevor der JS-Interpreter die Kontrolle wieder an den "Rest" des Browser zurueckgibt.

    Da kannst du nur deine For-Schleife mittels Timerfunktionen nachbilden, so dass "zwischendurch" immer wieder die Kontrolle ans GUI zurueckgeht, und dieses auf Tastendruck reagieren kann.

    MfG ChrisB

    1. ok, danke, das funktioniert:

      <HTML>

      <BODY>
      <input name=start type=submit value="start" onClick=go()>
      <input name=stop type=submit value="stop" onMousedown=window.clearInterval(aktiv); onMouseup=window.clearInterval(aktiv);>
      </BODY>

      <SCRIPT LANGUAGE="JavaScript" type="text/javascript">
      m = new Array();
      z = 0;

      function go() {
       aktiv = window.setInterval("s()",1);
      }

      function dontgo() {
       window.clearInterval(aktiv);
      }

      function s() {
       m[z] = document.createElement("embed");
       m[z].src =  "md/" + z + ".mid";
       m[z].autostart = false;
       m[z].hidden = false;
       m[z].id = z;
       document.body.appendChild(m[z]);

      z++;

      if (z > 47)
          window.clearInterval(aktiv);
      }
      </SCRIPT>
      </HTML>

  2. Hallo,

    Wie kann man den Durchlauf einer for-Schleife per Taste, in javascript, verhindern?

    Du kannst window.onkeydown eine Funtkion zuweisen:

    ---
    window.onkeydown = schleife_stoppen();
    ---

    Diese Funtkion setzt eine globale Variable:

    ---
    function schleife_stoppen()
    {
       schleife_gestoppt = true;
    }
    ---

    Und zum Schluss fragst du jedes mal am Ende deiner Schleife ab, ob diese globale Variable true oder false ist. Je nachdem beendest du dann die Schleife oder nicht.

    1. Hi,

      Du kannst window.onkeydown eine Funtkion zuweisen:
      Diese Funtkion setzt eine globale Variable:

      Dazu wird sie nur leider kaum kommen, so lange die For-Schleife noch laeuft.

      MfG ChrisB