ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
297
297
EMPFEHLEN
-
Hallo erstmal.
Ich beschäftige mich nun seit kürzerer Zeit mit Javascript, nach dem ich erste Schritte in HTML und PHP unternommen habe. Bin jetzt auch schon soweit mittels getElementById die ersten Manipulationen an meiner Seite und den Objekten dort vorzunehmen. Doch ist halt noch alles ein wenig "stockend", meint das ich keine flüssig animierten Vorgänge gestaltet bekomme.
habe die funktion setTimeout gefunden und mich an C erinnert, wo mit dem Befehl delay(int wert); der ablauf so und so viele millisekunden abgestoppt wird.
Doch jetzt sieht der Syntax anders aus als bei C und ich müsste bei setTimeout ja, dass
was gestoppt werden soll innerhalb der Funktion vor dem Zeitwert notieren. Also so:
Code :1 2 3
for (i = 0; i <= 129; i++) { document.getElementById("content2").style.left = "-" + (bilderZahl + i) + "px"; }, 600);
Aber irgendwo scheint sich bei mir ein Denkfehler aufgetan zu haben, da es nicht funktioniert.
Gibt es denn eine vergleichbare Alternative zu setTimeout();? Und kommt diese näher an das Prinzip von delay(); heran?
Danke für eure Hilfe
btw: Wie konnte ich noch mal mittels mouseevent innerhalb der Funktion einen Abbruchbefehl erzeugen? Da gab es so etwas, hab zumindest davon gehört.
So jetzt ist aber gut, mit der Fragerei!
-
Ich gehe mal davon aus, dass delay() den Ablauf des Programms verzögert. So etwas existiert in Javascript nicht. setTimeout() registriert eine Funktion, welche dann Asynchron ausgeführt wird. Das bedeutet, dass nach setTimeout der Code normal weiterläuft und wenn die angegebene Zeit abgelaufen ist, wird die festgelegte Funktion aufgerufen und dann an der aktuellen Stelle weitergemacht. Dein Ansatz kann also nicht funktionieren.
Code javascript:1 2 3 4 5 6 7 8 9
var i = 0; window.setTimeout("fn", 600); function fn() { document.getElementById("content2").style.left = "-" + (bilderZahl + i) + "px"; i++; if(i<129) window.setTimeout("fn", 600); }
Oder besser via seIntervall
Code javascript:1 2 3 4 5 6 7 8 9
var i = 0; var pointerAufDenTimer = window.setInterval("fn", 600); function fn() { document.getElementById("content2").style.left = "-" + (bilderZahl + i) + "px"; i++; if(i>129) window.clearInterval(pointerAufDenTimer); }
-
Also ich habe versucht den von dir vorgeschlagenen Code einzusetzen.
Ich habe hier jetzt die ganze Funktion von mir mal drin.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
function klickeR() { var i=0; var bilder = document.getElementById("content2").style.left; /* * Hier wir der pure Wert aus dem Styleattribut des "content2" DIVs geholt und da es * erst ein String ist gesucht und danach zerlegt so das nur der warte als String * übrig bleibt und anschließend wird dieser String-Wert in eine Interger-Zahl geändert * so das mit dem Wert des "container2" DIVs gerechnet werden kann. */ var eins = bilder.indexOf("-"); var zwei = bilder.lastIndexOf("px"); var neuBilder = bilder.slice(eins+1, zwei); var bilderZahl = parseInt(neuBilder); /* * Aufruf der eigentlichen Funktion. * Hier wird der Wert der Verschiebung erhöht und die Tabelle mit den Bildern immer ein Stück * weiter nach links verschoben. if(bilderZahl<=530){ for (i = 0; i <= 129; i++) { setTimeout("document.getElementById(\"content2\").style.left = \"-\" + (bilderZahl + i) + \"px\";}", 600); } } else { document.getElementById("myTxt").innerHTML += " Das ist genug!!"; } */ window.setTimeout("fn()", 600); function fn() { document.getElementById("content2").style.left = "-" + (bilderZahl + i) + "px"; i++; if (i > 129) { window.clearInterval(pointerAufDenTimer); } } }
Diesen lasse ich über onclick="klickeR" in der HTML ausführen.
Kann es sein das mein ganzes Layout für den Code einfach nur murks ist?
Geht eine function innerhalb einer function überhaupt?
-
boa Schwachsinn... jetzt misch ich schon die Antworten zusammen! Das darf ja nicht wahr sein!
Sorry. Hab gesehen das ich ein wenig von der setTimeout und der setInterval Antwort vermischt habe. -.-
-
Alles klar...
Habe es nun mit der setTimeout(); Funktion geschafft.
mein Code sieht nun folgernder maßen für rechts sowie links herum aus.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
var i=0; var bilderZahl= 1; function klickeR() { show=0; // Hilfsausgabe in eine textarea document.getElementById("myTxt").innerHTML += "Funktion gestartet: "+i+"\n"; // Berechnung bilderZahl++; document.getElementById("content2").style.left = "-" + (bilderZahl) + "px"; i++; // Überprüfung ob "i" gleich "129" ist, wenn ja soll "show" auf "1" gesetzt werden, damit // die Anweisung mit "setTimeout" nicht ausgeführt wird if (i == 129){ show=1; } // Wird nur ausgeführt so lange "i" kleiner eins ist und show gleich eins ist if (i < 130 && show==0) { window.setTimeout("klickeR()", 1); } //Wenn show auf eins gesetzt wurde, und die zweite IF-Anweisung somit nicht ausgeführt wurde //werden "show" und "i" wieder auf null gesetzt, so dass die Funktion ein weiteres aufgerufen werden //muss. if(show==1){ i=0; show=0; } } //----------------------------------| // Das ganze jetzt nur anders herum | //----------------------------------| function klickeL() { show=0; // Hilfsausgabe in eine textarea document.getElementById("myTxt").innerHTML += "Funktion gestartet: "+i+"\n"; // Berechnung bilderZahl--; document.getElementById("content2").style.left = "-" + (bilderZahl) + "px"; i++; // Überprüfung ob "i" gleich "129" ist, wenn ja soll "show" auf "1" gesetzt werden, damit // die Anweisung mit "setTimeout" nicht ausgeführt wird if (i == 129){ show=1; } // Wird nur ausgeführt so lange "i" kleiner eins ist und show gleich eins ist if (i < 130 && show==0) { window.setTimeout("klickeL()", 1); } //Wenn show auf eins gesetzt wurde, und die zweite IF-Anweisung somit nicht ausgeführt wurde //werden "show" und "i" wieder auf null gesetzt, so dass die Funktion ein weiteres aufgerufen werden //muss. if(show==1){ i=0; show=0; } }
Ja, es sind die PHP brackets, aber es ist farbig besser zu sehen
Zugegeben ist es nicht die eleganteste Lösung
, und es scheint ein wenig zu "laggn"
aber das wird schon passen.
Danke für die Hilfe.
-
31.07.10 18:05 #6
Du hast deinen Code in einen JAVA-Tag gepackt.
Ich will hier nur anmerken das JAVA ≠ JAVASCRIPT ist!mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Ist wirklich so und ich weiß das JScript nicht gleich Java ist.
Das PHP stand noch da als in den Brackets tatsächlich PHP stand
Habe dann mal Java ausprobiert und gefiel etwas besser. Aber es soll nicht zeigen das JS auch in einem Java-Prog funktioniert sondern hier der Übersichtlichkeit dienen!
-
offtopic: JScript ist wieder was anderes
-
Hehe, ok, ich gebe mich geschlagen!
Aber hey, es funktioniert immernoch!
Ähnliche Themen
-
Richtige Syntax bei Operatorüberladung, wann sind "friend", "const", "&" nötig?
Von mrs_schokokeks im Forum C/C++Antworten: 4Letzter Beitrag: 25.08.10, 19:13 -
Mograoh animation in "key animation" umwandeln
Von digital art im Forum Cinema 4DAntworten: 3Letzter Beitrag: 14.10.09, 13:51 -
Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
Von MTMonline im Forum Videoschnitt, Videotechnik & -produktionAntworten: 2Letzter Beitrag: 25.04.08, 09:49 -
Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 6Letzter Beitrag: 27.05.05, 15:29 -
"kleine" Animation in "großer" Animation in einer Schleife?
Von Stefan Hönel im Forum Flash PlattformAntworten: 6Letzter Beitrag: 12.03.04, 17:28





Zitieren


Login





