Markus Grunk: Warten auf Mouseclick

In einem Script soll auf eine Mauseingabe (Buttonclick) gewartet werden, danach soll das Script weiterlaufen...

Wie geht dem ?

  1. In einem Script soll auf eine Mauseingabe (Buttonclick) gewartet werden, danach soll das Script weiterlaufen...

    Wie geht dem ?

    du setzt einen eventhandler (http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm) dorthin wo du den mausklick erwartest, und der ruft dann die function auf die dann das macht was du willst(oder was die function grade will, je nach fähigkeit des scriptschreibers)

    @Sven Rautenberg
    selbstverständlich heist es onClick und nicht onMouseClick =)war wohl etwas durcheinander

    1. Nicht ganz was ich meine. Sei mir net bös, aber lesen kann ich auch, soweit bin ich auch gekommen. Ich mein sowas in der Art:

      for(semmel = 0; semmel < 11; semmel++){
         wait_for_mouseclick();
         .
         .
         semmel++;
      }

      Wenn ich irgendwo anders im Script den Mouseclick abfange und in der oben genannten Schleife darauf warte, zB so:

      while(!wait_for_mouseclick())
      {

      }

      also ich nichts mache, hängt sich jeder Browser nach einer Zeit auf...

      Aber trotzdem Danke, Ralf! Gehe deine HP besuchen ...oder so

      1. Nicht ganz was ich meine. Sei mir net bös, aber lesen kann ich auch, soweit bin ich auch gekommen. Ich mein sowas in der Art:

        for(semmel = 0; semmel < 11; semmel++){
           wait_for_mouseclick();
           .
           .
           semmel++;
        }

        hm.. also wenn du mehr von deinem code rausrückst kann ich konkreter helfen(müsste den genauen grund fpür den mausklick wissen) kannst du das net in mehreree funktionen aufteilen?
        zb. wenn deine funktion irgentwas ins browserfenster malt wo der user klicken soll, erst malen, function beenden, und bei mausklick neue function starten.
        wenn daten aus der ersten function in die 2. fuction gehen sollen, gibts mehrere möglich keiten, 1. cookies, 2. kannst du irgentwo im document ein style="visibility:hidden;oder posititon:absolute; top:-3000px;left:-9000px;"textfeld oder was weis ich was reinquetschen und das dann mit der neuen function auslesen, wenns noch andere probleme geben sollte musste halt mehr verraten

        1. Hehe, geht um ne Demo von Bubblesort für ne Semesterarbeit:also da isn Button :

          <input id="los" type="button" onClick="sortieren();" value="Hau rein, Browser!">
          und n Statusfeld :

          <h3>Status:</h3>
          <p id="hier"> </p>
          .
          .

          Jetzt hab ich ne Funktion sortieren(); wo dann bei bestimmten Schlüsselereignissen der Code "gestoppt" oder unterbrochen werden soll, danach eine Message in das Statusfeld geschrieben wird(zB "Feld zum Sortieren initialiert" usw).
          Danach klickt der User auf den Button und der Code läuft an der Stelle weiter, wo aufgehört wurde.... Habs mit Mouseevents probiert, break; aus dem Code herraus und mit Labels und continues, aber klappt nichts....

          Danke für die Hingabe ! Ich schätze das,  visite deine Seite oder so!

          1. Jetzt hab ich ne Funktion sortieren(); wo dann bei bestimmten Schlüsselereignissen der Code "gestoppt" oder unterbrochen werden soll, danach eine Message in das Statusfeld geschrieben wird(zB "Feld zum Sortieren initialiert" usw).

            bis hierhin kein problem richtig?

            Danach klickt der User auf den Button und der Code läuft an der Stelle weiter, wo aufgehört wurde.... Habs mit Mouseevents probiert, break; aus dem Code herraus und mit Labels und continues, aber klappt nichts....

            habe ne idee weis zwar net ob es gegen die anforderungen geht, aber gegen das was du mir gesagt hast verstößt es nicht.

            muss nur mal was elementares dazu testen.... 10-30 minuten

          2. Danke für die Hingabe ! Ich schätze das,  visite deine Seite oder so!

            dazu erstmal siehe <?m=11179&t=1949> - wobei ich vom hit's zählen in letzter Zeit stark abstandgenommen habe.

            also hier mein lösungsvorschlag:

            <html>
            <head>
            <script language="JavaScript">
            <!--

            /*so dies ist deine function die unterbrochen werden sollbzw eweitermacht wo sie aufhört*/
            function funktio() {
            var X =document.all.versteckterwert2.innerHTML;
            var check=document.all.versteckterwert.innerHTML;
            while(check==1)
            {
             switch () {
             case "noch net angefangen":
             { /*1. arbeitschritt*/ document.all.versteckterwert2.innerHTML="schritteins fertig";break;}
             case "schritt eins fertig":
             { /*2. arbeitschritt*/document.all.versteckterwert2.innerHTML="schritt zwei fertig";break;}
             case "schritt zwei fertig":  /*3.
              arbeitschritt*/document.all.versteckterwert2.innerHTML="schritt drei fertig";break;
             //usw
             }
            }
            alert(document.all.versteckterwert2.innerhtml)

            }

            function geklickt() {
            var testen;
            testen=document.all.versteckterwert.innerHTML;
            if(testen=1)document.all.versteckterwert.innerHTML=0;
            else
            {document.all.versteckterwert.innerHTML=1;funktio();
            }
            //-->
            </script>

            <title></title>
            <meta name="author" content="Ralf Bleil">
            <meta name="generator" content="Ulli Meybohms HTML EDITOR">
            </head>
            <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
            <div id="versteckterwert"style="visibility:hidden;">1</div>
            <div id="versteckterwert2"style="visibility:hidden;"></div>
            <script language="JavaScript">
            <!--
            funktio();
            //-->
            </script>
            <noscript></noscript>
            </body>
            </html>

            also syntax/rechtschreib und ähnliche fehler net beachten, das ist ein entwurf

            aber ich denke vom schema her würde ich das so in etwa lösen(natürlich ohne .all sondern crossbrowser mäßig:)

            1. whoa also bei switch kommt switch(X) rein
              und bei
              <div id="versteckterwert2"style="visibility:hidden;">noch net angefangen</div>

            2. axo das X muss natürlich IN der while schleife declariert werden :) naja es geht halt ums prinzip, die fehler musste in gedanken halt so richtig stellen das es geht, ist halt nen grober umriss wie es gehen könnte

            3. Hmm, verstehe den Ansatz, mal probieren!

              DANKE !

          3. Hehe, geht um ne Demo von Bubblesort für ne Semesterarbeit:also da isn Button :

            <input id="los" type="button" onClick="sortieren();" value="Hau rein, Browser!">
            und n Statusfeld :

            <h3>Status:</h3>
            <p id="hier"> </p>
            .
            .

            Jetzt hab ich ne Funktion sortieren(); wo dann bei bestimmten Schlüsselereignissen der Code "gestoppt" oder unterbrochen werden soll, danach eine Message in das Statusfeld geschrieben wird(zB "Feld zum Sortieren initialiert" usw).
            Danach klickt der User auf den Button und der Code läuft an der Stelle weiter, wo aufgehört wurde.... Habs mit Mouseevents probiert, break; aus dem Code herraus und mit Labels und continues, aber klappt nichts....

            Was spricht gegen alert()?
            Wenn die Meldungen für später aufgehoben werden sollen, schreibe den Text zusätzlich irgendwo anders hin (z.B. Textfeld).

            Danke für die Hingabe ! Ich schätze das,  visite deine Seite oder so!

            - Sven Rautenberg

            1. Was spricht gegen alert()?
              Wenn die Meldungen für später aufgehoben werden sollen, schreibe den Text zusätzlich irgendwo anders hin (z.B. Textfeld).

              Ja, das ist auch mein letzter Ausweg, wenn goarnix mehr geht. Sieht so arm aus... Ich stell mal ne Version online, wo das mit Alert() gemacht wurde. Hab ja jetzt viele Lösungshilfen erhalten !

    2. Apropos deine HP: Das Button auf der linken Seite hat nen Rechtschreibfehler: Net :"beautyfull girls", sondern :"beautyful girls" it´s just one "L" !

      So hilft man sich gegenseitig, schön!

      1. Apropos deine HP: Das Button auf der linken Seite hat nen Rechtschreibfehler: Net :"beautyfull girls", sondern :"beautyful girls" it´s just one "L" !

        So hilft man sich gegenseitig, schön!

        Wenn du schon anderer Leute Rechtschreibfehler verbessern mußt, dann bitte gleich richtig. Es heißt "beautiful". Vergleiche http://www.infoplease.lycos.com/ipd/A0337004.html.

        - Sven Rautenberg

        1. Stimmt, Erbsenzähler ;))))

          Hilf mir besser bei meinem Problem!...

          1. Stimmt, Erbsenzähler ;))))

            Auf sowas reagiere ich immer so, wie ich gerne möchte. Manchmal garnicht.

            Hilf mir besser bei meinem Problem!...

            1. WAR NUR EIN WITZ ! HALLO ! Normalerweise deutet soetwas ein nachgestellter Smiley an(siehe meine Mehl!)

              Gruss, und freues Neues, net bös sein!

      2. Apropos deine HP: Das Button auf der linken Seite hat nen Rechtschreibfehler: Net :"beautyfull girls", sondern :"beautyful girls" it´s just one "L" !

        So hilft man sich gegenseitig, schön!

        whoa, wusste garnet das ich meine homepage angegeben hatte, aber thx,  uhmm die verottet zur zeit sowieso, da ich durch unfall alle meine daten auf der harddisk verloren habe, und außerdem ist meine aktuelle homepage bei t-online gehostet (weil noch nicht fertig).
        http://grimslaya.bei.t-online.de da kannste gern nach fehlern suchen! besonders nach script fehlern.

  2. Lösungsvorschlag, getestet.
    Hier zur Demo statt sort nur ein einfaches Aufwärtszählen.

    Knackpunkt ist, daß der Browser bei rechenintensiven Aufgaben die Klick-Ereignisse nicht abfragt, sondern wartet, bis die Berechnung zu Ende ist. Daher ist zwischendurch immer ein Timer zu setzen, der dem Browser dafür Luft gibt!

    <form>
     <input type=text name=ausgabe>
     <input type=button value="STOPP!" onclick="stopp=1">
    </form>

    <script><!--
    var x=0,stopp=0
    function sort(){
     x++
     top.status=document.forms[0].ausgabe.value=x
     if(stopp){
      top.status=document.forms[0].ausgabe.value="Fertig."
     }else
      setTimeout("sort()",1)
    }
    sort()
    //--></script>

    1. hm...das verstehe ich nicht, ich dachte immer sobald die funktion verlassen wird dann werden globale variablen zwar nicht gelöscht, aber die nächste funktion fängt wieder so an wie sie declariert wurde...

      also vor einiger zeit(1 jahr oder so) wollte ich das auch mal machen, einen wert der funktiona der funktionb übergeben mit globalen variablen, der wert ist nie angekommen....

      1. Ne, der behält sich die Variablen...also den Wert

        1. Alle Variablen, die mittels var außerhalb von Funktionen deklariert wurden, werden "an das Fenster" gebunden und somit für alle Funktionen im gleichen Fenster gültig, selbst wenn man mehrere <script>...</script> hintereinander verwendet.

          Was leider nicht klappt, ist das Verwenden von Variablen, die innerhalb einer Funktion mittels var deklariert wurden, wenn also var a in functionA deklariert ist, und functionA functionB aufruft, kann functionB leider nicht darauf zugreifen (in anderen Programmiersprachen wäre dies möglich). In JavaScript muß man dann auf globale Variablen zurückgreifen (außerhalb von functions mittels var deklariert).

          Übrigens kann man Variablen auch ohne var anlegen. Dann werden sie zur Laufzeit angelegt. Deren Existenz läßt sich abfragen, aber nicht mit if(variable), sondern if(window.variable). Allerdings sollte die Variable dann einen Wert !=0 oder !="" oder !=false enthalten.

          So läßt sich ggf. feststellen, ob eine Funktion schon ausgeführt wurde.

          1. Alle Variablen, die mittels var außerhalb von Funktionen deklariert wurden, werden "an das Fenster" gebunden und somit für alle Funktionen im gleichen Fenster gültig, selbst wenn man mehrere <script>...</script> hintereinander verwendet.

            achso also an das fenster gebunden, und wenn ich ne externe js datei benutze und eine neue seite aufrufe, dann ist die variable nicht an die externe js datei gebunden sondern an das browser fenster?

            für den fall ist mir dann klar wieso meine variablen übergabe damals nicht funktionierte...

    2. Verstehe den Ansatz. Muss testen..

      DANKE!
      (Hab dafür deine HP besucht :) )