per klick zeitabhängigen divberreich abbrechen und zum nächsten gehen
falke
- javascript
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"> <img src="iq09b.gif" alt="watt">'; ?>
<br> <? if( $cook_daten[8] == mittel)echo '<img src="iq10a.gif" alt="watt"> <img src="iq10b.gif" alt="watt">'; ?>
<br> <? if( $cook_daten[8] == schwer)echo '<img src="iq11a.gif" alt="watt"> <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
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
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"> <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
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
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
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
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
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