Ich habe einen dreistufigen Prozess, der vollständig auf JavaScript und Ajax angewiesen ist, um Daten zu laden und den Prozess von einem Schritt zum nächsten zu animieren. Um die Sache noch komplizierter zu machen, wird der Übergang (vorwärts und rückwärts) zwischen den Schritten animiert :-(. Wenn der Benutzer durch den Prozessanker läuft, werden der aktuelle Schritt und die vorherigen Schritte angezeigt. Wenn er auf einen vorherigen Schritt klickt, wird er zurück zu der vorherige SchrittWie Hinzufügen von Ereignishandler mit Argumenten zu einem Array von Elementen in Javascript?
Derzeit funktioniert der gesamte Prozess (vorwärts und rückwärts) ordnungsgemäß, wenn Sie mit Schritt 1 beginnen, aber wenn Sie direkt zu Schritt 3 springen, führen die Anker für Schritt 1 und Schritt 2 ebenfalls dasselbe aus Aktion als Schritt 3.
Dies ist der Teil des Codes, der alle Schritte bis zum aktuellen Schritt durchläuft, auf dem der Benutzer aktiv ist, und zeigt jeden Anker der Reihe nach an und weist dem Klickereignis die entsprechende Funktion zu:
for (var i = 0; i < profile.current + 1; i++) {
if ($('step_anchor_' + i).innerHTML.empty()) {
var action = profile.steps[i].action;
var dao_id = profile.steps[i].dao_id;
$('step_anchor_' + i).innerHTML = profile.steps[i].anchor;
$('step_anchor_' + i).observe('click', function(){
pm.loadData(action, dao_id, true);
});
Effect.Appear('step_anchor_' + i, {
duration: 1,
delay: (down_delay++)
});
}
}
Ich weiß, dass das Problem in der Art und Weise liegt, dass die Aktion und dao_id Parameter übergeben werden. Ich habe auch versucht, profile.steps [i] .action und profile.steps [i] .dao_id aber in In diesem Fall sind sowohl Profil als auch ich oder zumindest ich außerhalb des Bereichs.
Wie mache ich es so, dass ich die Parameter für Aktion und dao_id für jeden Schritt richtig zuweisen kann? (Wenn es einen Unterschied macht, verwenden wir Prototype und Scriptaculous)
Es scheint fast zu tun, was ich brauche :-(Aber jetzt bewirkt, dass es um das Ereignis fire zweimal und es entlädt sich automatisch automatisch –
Stellen Sie zuerst sicher, dass Sie die Schleife nur einmal aufrufen.Was meinst du mit "Entlädt sich"? Dass das Ereignis nicht erneut ausgelöst wird? – Benry
Ich wünsche nur, dass ich hatte mehr Upvotes ... Danke eine Tonne.Es ist mir jetzt peinlich zu denken, wie lange ich mir den Kopf zerbrochen habe, um das herauszufinden. –