php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.09.2010, 10:37  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard [Erledigt] onclick-event per Array in Schleife verwenden

Hab gleich mal die nächste Frage.

Folgende Ausgangssituation:
Code:
var targets = new Array('ziel1', 'ziel2');
var links = new Array(document.getElementById('link1'), document.getElementById('link2'));

links[0].onclick = function() { window.location = targets[0] };
links[1].onclick = function() { window.location = targets[1] };
Aufd diese Weise verzweigt er bei Klick auf den entsprechenden Link zum richtigen Ziel.
Wenn ich jetzt aber das ganze in eine Schleife setze:
Code:
var targets = new Array('ziel1', 'ziel2');
var links = new Array(document.getElementById('link1'), document.getElementById('link2'));

for(x=0; x<links.length; x++) links[x].onclick = function() { window.location = targets[x]; };
erzeugt er mir für jedes targets[x] ein "undefined"!
Habe anstelle von window.location ein alert() verwendet, wo ganz deutlich zu sehen ist, daß es ohne Schleife geht, mit aber nicht.

Mache ich einen Gedankenfehler?
Oder ist das normal, daß das so nicht funktioniert?

Hab im Netz keine richtige Antwort gefunden.
Es wäre kein Problem die Zeilen einzeln aufzuführen, aber da ich sowieso das Array durchlaufe, hätte ich dies gerne mit reingenommen.

Bin gespannt, was ich nicht bedacht habe?!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.09.2010, 10:47  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.071
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Code:
var x = 0
muss es heißen, oder? Und die geschweiften Klammern des for-Blocks würde ich auch immer setzen.
__________________
HalloPHP
Asipak ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:00  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Habe die var-Variante bereits probiert und Klammern waren auch mal drum, weil ich es wie geasgt bereits in einer anderen Schleife drin hatte.
Rausgenommen habe ich es da eben aus dem Grund, weils ein undefined gab.

Hab's auch grad nochmal probiert mit dem var, und bleibt undefined...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:03  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.071
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Läuft die Schleife denn überhaupt?
__________________
HalloPHP
Asipak ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:08  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Jo
Zitat:
Habe anstelle von window.location ein alert() verwendet...
Da kamen ja entsprechende Ausgaben, eben nur 'undefined'.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:12  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 1.898
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Meinst du vielleicht window.location.href ? location selbst ist ein Objekt, das du nicht mit einem String überschreiben solltest. Einfach mal in firebug in der Konsole console.log(window.location) eingeben, dann siehst du gleich alle Properties.

p.s.: die Array Schreibweise kannste auch abkürzen.
Nur paar bsp.:
PHP-Code:
var foo = [];
var 
foo2= [1,2,3];
var 
bar = [[1,2,3], [2,34,7]] 
grüße
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:23  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Danke für den Tipp!
window.location.href ist allerdings auch nicht die Lösung.
Wie gesat, ohne Schleife mit direkter Angabe der Array-Elemente funktionierts ja.
Erst, wenn ich es per Schleife regeln möchte, komt undefined für die Array-Elemente.

Mir kommt es so vor, als ob das Array targets in der onclick-Funktion mit mal nicht mehr bekannt ist.
Kann das sein?

Wenn ja, was kann ich dagegen tun?
Eine Übergabe des Array an die Funktion hat auch nicht geholfen. Schon probiert.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:33  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.071
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Da das Array außerhalb der Funktion deklariert wird, sollte es eigentlich global verfügbar sein.

Gibt
Code:
alert(x);
innerhalb der Funktion etwas aus?
__________________
HalloPHP
Asipak ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:42  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Innerhalb der Funktion wird immer 2 ausgegeben.
Das is ja klar, daß dann undefined kommt... Hmmmm...
Aber warum ist das immer 2? Er müßte doch in den Durchläufen immer die entsprechenden Werte aus dem Array setzen, oder nicht?
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 02.09.2010, 11:48  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.071
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hmm, 2 wird x ja erst, wenn die Schleife ganz durchlaufen wurde, da du 2 Einträge hast und x nach dem letzten Eintrag dann auf 2 gesetzt wird und damit die Bedingung nicht mehr erfüllt.

Das hört sich für mich so an, als ob die Schleife durchlaufen, aber erst nach der Schleife der Ausdruck mit der Funktion ausgewertet wird. Wie sieht denn dein Code aktuell aus? Hast du die geschweiften Klammern auch wieder gesetzt?

Ansonsten habe ich gerade keine Idee mehr.
__________________
HalloPHP
Asipak ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
IE8 verliert Session Lenki PHP-Fortgeschrittene 10 25.04.2010 01:10
Ein (Teil)Array anhand von level und depth zurückgeben. greatcthulhu Scriptbörse 4 16.04.2010 10:45
PHP Array in javascript verwenden leojango JavaScript, Ajax und mehr 7 08.04.2010 00:40
[Erledigt] array in eine Schleife bearbeiten samij PHP Tipps 2010 4 03.04.2010 00:58
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
[Erledigt] Array Sortieren beist PHP Tipps 2009 4 10.07.2009 08:53
[Erledigt] array sortieren PHP Tipps 2004 17 13.05.2009 10:44
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
bbcode - Classe PHP-Fortgeschrittene 4 18.09.2004 17:30
Array mit while Schleife auslesen PHP Tipps 2004 7 26.06.2004 19:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array event, array in endlosschleife onclick, php array onclick event, mit onklick durch php array klicken, onclick array next php, php onclick array sortieren, php onclick arrays sortieren, setonclicklistener(, onlclick bei schleife funktioniert nicht, javascript click nächstes element array, php onclick array getelementbyid, nächstes array element bei onclick, javascript onclick-events in einer schleife, javascript schleife mit funktion, js for schleife onclick problem, html schleife bis ereignis, xajax onclick array, js schleife onclick setzen, schleife javascript problem onclick, firebug console array

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum