Gregor: Javascript-Funktion abbrechen

Hi,

wie kann man mit einfachen Mitteln eine im Body-Tag aufgerufene Javascript-Funktion wieder abbrechen.

Bei der Javascript-Funktion handelt es sich um eine Slideshow. Der Abbruch soll über einen Button erfolgen.

Danke

Gregor

  1. Hallo Gregor

    Das kommt sehr darauf an, was Du damit genau meinst.
    In der Funktion selbst kannst Du die Funktion mir return verlassen. Falls Du das abbrechen von außen herbeiführen willst, musst Du das der Funktion z.b. duch setzen einer Variable mitteilen.
    Falls Du, was bei einer Slideshow durchaus warscheinlich ist, mit setIntervall() eine Funktion regelmäßig aufrufst, kannst Du das mit clearIntervall() abbrechen.

    Falls Dir das nicht weiterhilft, musst Du mal genauer formulieren, was Du meinst.

    Grüße

    Daniel

    1. Hallo Gregor

      Das kommt sehr darauf an, was Du damit genau meinst.
      In der Funktion selbst kannst Du die Funktion mir return verlassen. Falls Du das abbrechen von außen herbeiführen willst, musst Du das der Funktion z.b. duch setzen einer Variable mitteilen.
      Falls Du, was bei einer Slideshow durchaus warscheinlich ist, mit setIntervall() eine Funktion regelmäßig aufrufst, kannst Du das mit clearIntervall() abbrechen.

      Falls Dir das nicht weiterhilft, musst Du mal genauer formulieren, was Du meinst.

      Grüße

      Daniel

      Hi Daniel,

      ich möchte die Funktion extern abbrechen.

      Beispiel für den Aufruf:
      javascript:slideshow()

      Und nun soll ein Abbruch ausgeführt werden:
      javascript:stopshow()

      Was muss in der Funktion stopshow stehen?

      Mit

      function stopshow(){
         break slideshow
      }

      gibts eine Fehlermeldung und weiter reichen meine Kenntnisse noch nicht. Leider finde ich auch nur Infos zum Aufrufen einer Funktion oder halt den Abbruch deren innerhalb.

      Grüße

      Gregor

      1. Hi Gregor,

        "break slideshow" ist Schwachsinn. Du mußt ein sog. "Flag" (Schalter) benutzen, was nichts anderes ist als eine Boolsche Variable... Beispielsweise so:

        init_slideShow();

        function slideShow()
        {
          while (show)
          {
            // hier kommt der Code zum Bild anzeigen
          }
          else return;
        }

        function init_slideShow()
        {
          show = true;
          // hier folgen weitere Initialisierungen
        }

        function stop_slideShow()
        {
          show = false;
        }

        Gruß,
        (: Danny :)

        1. Hi Gregor,

          "break slideshow" ist Schwachsinn. Du mußt ein sog. "Flag" (Schalter) benutzen, was nichts anderes ist als eine Boolsche Variable... Beispielsweise so:

          init_slideShow();

          function slideShow()
          {
            while (show)
            {
              // hier kommt der Code zum Bild anzeigen
            }
            else return;
          }

          function init_slideShow()
          {
            show = true;
            // hier folgen weitere Initialisierungen
          }

          function stop_slideShow()
          {
            show = false;
          }

          Gruß,
          (: Danny :)

          Hi Danny,

          da ich noch Anfänger mit Javascript bin hatte ich leider mit dem einfügen des Codes in deine Variable keinen Erfolg. Es kam immer zu einem Syntaxerror was sicherlich auf meine Unwissenheit zurück zuführen ist.

          Hier der Code der Funktion, vielleicht läßt sich da irgendwo ein Stop-Flag setzen.

          <script language="JavaScript">
            var j,l="",m="",p="",q="",z="",list= new Array()
            list[list.length]='bild01.jpg';
            list[list.length]='bild02.jpg';
            list[list.length]='bild03.jpg';
            list[list.length]='bild04.jpg';
            list[list.length]='bild05.jpg';
            j=parseInt(Math.random()*list.length);
            j=(isNaN(j))?0:j;
              document.write("<img name='SlideShow' src='"+list[j]+"'>");
          function SlideShow(t,l) {
            x=document.SlideShow;
            j=l;
            j++;
            if (j==list.length) j=0;
            x.src=list[j];
            setTimeout("SlideShow("+t+","+j+")",t);
            }
          </script>

          Besten Dank für die Hilfestellung.

          Gregor

          1. <script language="JavaScript">
            <!--
              var j,l="",m="",p="",q="",z="";

            var list=new Array();
              list[list.length]='bild01.jpg';
              list[list.length]='bild02.jpg';
              list[list.length]='bild03.jpg';
              list[list.length]='bild04.jpg';
              list[list.length]='bild05.jpg';

            j=parseInt(Math.random() * list.length);
              j=(isNaN(j)) ? 0 : j;

            document.write("<img name='SlideShow' src='"+list[j]+"'>");

            function SlideShow(t,l)
            {
              if (show)
              {
                x=document.SlideShow;
                j=l;
                j++;
                if (j==list.length) j=0;
                x.src=list[j];
                setTimeout("SlideShow("+t+","+j+")",t);
              }
            }
            //-->
            </script>

            Den Rest mußt Du schon selbst anpassen... ;-)

            1. <script language="JavaScript">
              <!--
                var j,l="",m="",p="",q="",z="";

              var list=new Array();
                list[list.length]='bild01.jpg';
                list[list.length]='bild02.jpg';
                list[list.length]='bild03.jpg';
                list[list.length]='bild04.jpg';
                list[list.length]='bild05.jpg';

              j=parseInt(Math.random() * list.length);
                j=(isNaN(j)) ? 0 : j;

              document.write("<img name='SlideShow' src='"+list[j]+"'>");

              function SlideShow(t,l)
              {
                if (show)
                {
                  x=document.SlideShow;
                  j=l;
                  j++;
                  if (j==list.length) j=0;
                  x.src=list[j];
                  setTimeout("SlideShow("+t+","+j+")",t);
                }
              }
              //-->
              </script>

              Den Rest mußt Du schon selbst anpassen... ;-)

              Hi Danny,

              vielen Dank für die Hilfe. Ich hoffe das ich mit Copy/Paste klar komme. Falls nicht melde ich wieder.

              Grüße

              Gregor

            2. Hallo Danny,

              das war wohl etwas knapp als Hinweis. Wichtig ist doch, dass die Variable show global deklariert wird, d.h. sie kann in allen Funktionen verwendet werden. Parameterübergabe sollte man sich ersparen. Also:

              <script language="JavaScript">
              <!--
                 var show, BildNr
                 var t= ... Darstellungszeit der Bilder

              function StartSlideShow() {
                 show="true"
                 BildNr=... (Auswahl des ersten Bildes)
                 SlideShow()
              }

              function SlideShow()
              {
                 if (show) {
                    ... Das Bild mit Nummer BildNr darstellen
                    BildNr= ... (nächster Wert)
                    setTimeout("SlideShow()",t)
                 }
              }

              function StopSlideShow()
              {
                 show="false"
              }

              //-->
              </script>

              Gruß
              Hans35

      2. Moin!

        ich möchte die Funktion extern abbrechen.

        Beispiel für den Aufruf:
        javascript:slideshow()

        Und nun soll ein Abbruch ausgeführt werden:
        javascript:stopshow()

        Was muss in der Funktion stopshow stehen?

        Das hängt davon ab, was die Funktion slideshow() macht.

        function stopshow(){
           break slideshow
        }

        Sowas gibts nicht.

        Hinweis zum Selber-Rausfinden: Du mußt in der Funktion slideshow() einen Mechanismus einbauen, der die Funktion anhält, sofern gewisse Bedingungen eintreten, also z.B. wenn eine Variable entsprechend gesetzt ist.

        - Sven Rautenberg