falke: per klick zeitabhängigen divberreich abbrechen und zum nächsten gehen

Abend,

also ich habe ein test der mehrere Themem hat die nach einer bestimmten Zeit zum nächsten Thema wechseln.
Außerdem hat man die Möglichkeit durch klicken eines Button den jeweiligen Berreich schon vor dem Zeitablauf zu verlassen.

Das funktioniert soweit auch ganz gut nur die übrigen Themen verlaufen dann nicht mehr nach dem vorgegebenden Zeitwert sondern rattern ziemlich schnell runter.

die funktion die die Themen wechselt:

function nextOne()
{
  document.getElementById("content" + current).style.display= "none";
  current ++;
// an dieser stelle sagt mir der scriptchecker von ie objekt erforderlich !  document.getElementById("content" + current).style.display = "block";

if(current == 2)
time(<? echo $cook_daten[1]; ?>);
if(current == 3)
time(<? echo $cook_daten[2]; ?>);
if(current == 4)
time(<? echo $cook_daten[3]; ?>);
if(current == 5)
time(<? echo $cook_daten[4]; ?>);
if(current == 6)
time(<? echo $cook_daten[5]; ?>);
if(current == 7)
time(<? echo $cook_daten[6]; ?>);
if(current == 8)
time(<? echo $cook_daten[7]; ?>);
}

hier ein Bereich in dem per klick abgebrochen wird um ein Thema weiter zu schalten:

<div id="content1" style="display:block"; width:320px; height:240px">Hier ist das erste Kapitel
<br> <? if( $cook_daten[8] == leicht)echo '<img src="iq09a.gif" alt="watt">&nbsp;&nbsp;&nbsp;&nbsp;<img src="iq09b.gif" alt="watt">'; ?>
<br> <? if( $cook_daten[8] == mittel)echo '<img src="iq10a.gif" alt="watt">&nbsp;&nbsp;&nbsp;&nbsp;<img src="iq10b.gif" alt="watt">'; ?>
<br> <? if( $cook_daten[8] == schwer)echo '<img src="iq11a.gif" alt="watt">&nbsp;&nbsp;&nbsp;&nbsp;<img src="iq11b.gif" alt="watt">'; ?>

<br>a:<input type="radio" name="a1" value="a">b:<input type="radio" name="a1" value="b">
c:<input type="radio" name="a1" value="c">d:<input type="radio" name="a1" value="d"><br><br>

// das ist der button !

<input type="button" onclick="current='1',nextOne();" value="weiter">

hoffentlich könnt ihr mir helfen

mfg falke

  1. hi,

    hoffentlich könnt ihr mir helfen

    nein, können wir so nicht - weil du hier serverseitigen code (PHP) postest, obwohl du ein clientseitiges problem diskutieren willst.

    wir wissen nicht, was dein PHP code für ausgaben erzeugt.
    also poste bitte den code, wie er beim client ankommt.

    und ein online-beispiel wäre zum leichteren nachvollziehen sicher auch hilfreich.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi

      nein, können wir so nicht - weil du hier serverseitigen code (PHP) postest, obwohl du ein clientseitiges problem diskutieren willst.

      wir wissen nicht, was dein PHP code für ausgaben erzeugt.
      also poste bitte den code, wie er beim client ankommt.

      »»

      hier der code für die funktion

      function nextOne()
      {
        document.getElementById("content" + current).style.display = "none";
      current ++;
      document.getElementById("content" + current).style.display = "block";

      if(current == 2)
      time(2000);
      if(current == 3)
      time(2000);
      if(current == 4)
      time(2000);
      if(current == 5)
      time(2000);
      if(current == 6)
      time(2000);
      if(current == 7)
      time(2000);
      if(current == 8)
      time(2000);
      }

      <div id="content1" style="display:block"; width:320px; height:240px">Hier ist das erste Kapitel
      <br> <br> <img src="iq10a.gif" alt="watt">&nbsp;&nbsp;&nbsp;&nbsp;<img src="iq10b.gif" alt="watt"><br>
      <br>a:<input type="radio" name="a1" value="a">b:<input type="radio" name="a1" value="b">
      c:<input type="radio" name="a1" value="c">d:<input type="radio" name="a1" value="d"><br><br>

      // hier kommt der button !

      <input type="button" onclick="current='1',nextOne();" value="weiter">

      </div>

      und ein online-beispiel wäre zum leichteren nachvollziehen sicher auch hilfreich.

      hab das so direkt nicht online obwohl ich xampp benutze
      muss es da nicht auch irgendwie erreichbar sein?

      mfg falke

      1. hi,

        hier der code für die funktion

        function nextOne()

        schön, jetzt kennen wir schon mal nextOne()

        if(current == 2)
        time(2000);

        und was is' mit tehee, äh time()?
        keine ahnung, was die macht. (höchstens vermutungen.)

        if(current == 2)
        time(2000);
        if(current == 3)
        time(2000);
        if(current == 4)
        time(2000);
        if(current == 5)
        time(2000);
        if(current == 6)
        time(2000);
        if(current == 7)
        time(2000);
        if(current == 8)
        time(2000);

        btw: kommt dir das nicht selbst etwas umständlich vor?

        du rufst time(2000) jedes mal auf, wenn current einen wert zwischen 2 und 8 hat - wofür fragst du dann auf jeden wert einzeln ab ...?

        <input type="button" onclick="current='1',nextOne();"

        zwei anweisungen werden in javascript mit einem semikolon getrennt, nicht mit einem komma.

        hab das so direkt nicht online obwohl ich xampp benutze
        muss es da nicht auch irgendwie erreichbar sein?

        ja, möglich - je nach konfiguration (und PFW und was sonst noch so reinspielen mag).
        aber wenn du, wie die meisten in D, mit einer dynamischen IP online gehst, wäre es jetzt eher witzlos, einen link mit dieser zu posten - weil dann deine beispielseite höchstvermutlich schon in wenigen stunden wieder nicht mehr erreichbar wäre.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi

          Der nachfolgende text wurde mir geraten aber ich hab es wohl nicht richtig umgesetzt

          Optimalerweise solltest du den Timeout in einer variablen speichern und zu Beginn der Funktion ersmal mittels clearTimeout() löschen.... damit der "automatische" Funktionaufruf nicht dazwichenfunkt

          hier die funktion

          tim = setTimeout('nextOne()',2000 ); // die Zeit für das erste Thema.

          function time(gets){
          //clearTimeout(tim); vorerst ausgeklammert da kein nutzen erkennbar war.
          setTimeout('nextOne()',gets);
          }

          somit ruft die time einfach nur die nextone auf.

          if(current == 2)
          time(2000);
          if(current == 3)
          time(2000);
          if(current == 4)
          time(2000);
          if(current == 5)
          time(2000);
          if(current == 6)
          time(2000);
          if(current == 7)
          time(2000);
          if(current == 8)
          time(2000);

          btw: kommt dir das nicht selbst etwas umständlich vor?

          du rufst time(2000) jedes mal auf, wenn current einen wert zwischen 2 und 8 hat - wofür fragst du dann auf jeden wert einzeln ab ...?

          die Zeit ist variable je nach einstellung sie wird halt über den cookie übergeben, nur ein Zufall das grad jede Zeit auf 2000 ist.

          <input type="button" onclick="current='1',nextOne();"

          zwei anweisungen werden in javascript mit einem semikolon getrennt, nicht mit einem komma.

          hab ich geändert aber nach wie vor.

          ja, möglich - je nach konfiguration (und PFW und was sonst noch so reinspielen mag).
          aber wenn du, wie die meisten in D, mit einer dynamischen IP online gehst, wäre es jetzt eher witzlos, einen link mit dieser zu posten - weil dann deine beispielseite höchstvermutlich schon in wenigen stunden wieder nicht mehr erreichbar wäre.

          ja dynamische ip

          wie müsste der link vor der ordnerangabe aussehen einfach nur die aktuelle ip?

          mfg falke

          1. hi,

            Der nachfolgende text wurde mir geraten aber ich hab es wohl nicht richtig umgesetzt

            Optimalerweise solltest du den Timeout in einer variablen speichern und zu Beginn der Funktion ersmal mittels clearTimeout() löschen.... damit der "automatische" Funktionaufruf nicht dazwichenfunkt

            wüsste momentan nicht, wozu das gut sein sollte.

            function time(gets){
            //clearTimeout(tim); vorerst ausgeklammert da kein nutzen erkennbar war.

            ja, sehe ich auch so.

            setTimeout('nextOne()',gets);

            hier hast du jetzt allerdings wieder versäumt, dir die referenz auf _diesen_ timeout auch wiederum in einer variablen abzulegen.

            (btw: setTimeout() ist eine methode des window-objektes. window.setTimeout() wäre also technisch sauberer.)

            die Zeit ist variable je nach einstellung sie wird halt über den cookie übergeben, nur ein Zufall das grad jede Zeit auf 2000 ist.

            ok, war am beispiel schlecht zu erkennen.

            ja dynamische ip
            wie müsste der link vor der ordnerangabe aussehen einfach nur die aktuelle ip?

            kommt, wie gesagt, auf die konfiguration deines webservers an.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi,

              hab die nextOne mal so geändert ganz ohne time

              function nextOne()
              {
                document.getElementById("content" + current).style.display= "none";
                current ++;
                document.getElementById("content" + current).style.display = "block";

              if(current == 2)
              window.setTimeout('nextOne()',<? echo $cook_daten[1]; ?>);
              if(current == 3)
              window.setTimeout('nextOne()',<? echo $cook_daten[2]; ?>);
              if(current == 4)
                      window.setTimeout('nextOne()',<? echo $cook_daten[3]; ?>);
              if(current == 5)
              window.setTimeout('nextOne()',<? echo $cook_daten[4]; ?>);
              if(current == 6)
              window.setTimeout('nextOne()',<? echo $cook_daten[5]; ?>);
              if(current == 7)
              window.setTimeout('nextOne()',<? echo $cook_daten[6]; ?>);
              if(current == 8)
                window.setTimeout('nextOne()',<? echo $cook_daten[7]; ?>);
              }

              hat sich im Verhalten allerdings nicht viel geändert.
              vielleicht fällt dir noch was ein?

              hier hast du jetzt allerdings wieder versäumt, dir die referenz auf _diesen_ timeout auch wiederum in einer variablen abzulegen.

              sag mal welchen Vorteil bringt das den timeOut in eine Variable zu stecken

              kommt, wie gesagt, auf die konfiguration deines webservers an.

              naja hab da noch nicht soviel eingestellt

              1. Hi,

                window.setTimeout('nextOne()',<? echo $cook_daten[1]; ?>);

                BTW: <?php echo $cook_daten[1]; ?>
                Und wenn der Server die Kurzschreibweise (nur mit <? statt <?php) erkennt, ist <?=$cook_daten[1]; ?> vielleicht prägnanter.

                hat sich im Verhalten allerdings nicht viel geändert.

                Und es ist *so* schwer, einmal im Browser "Seite speichern" anzuwählen und das dann zu posten?

                Na ja, *Du* brauchst Hilfe - wir können es ja ... >;->

                vielleicht fällt dir noch was ein?

                Z.B. könnte current eine lokale Variable sein.

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!