Problem Parameter Übergabe

win2tux

Grünschnabel
Hallo zusammen,

bei folgendem Code hakt es und krieg verdammt nochmal nicht raus warum.

Dreh und Angelpunkt ist ein Array das mehrere Objekte enthält. Dieses wird an eine Funktion übergeben, und innerhalb dieser Funktion kann auch auf alle Eigenschaften der enthaltenen Objekte zugegriffen werden. Problematisch wird es, wenn ich nun versuche eines der Objekte an eine weitere Funktion zu übergeben:

Code:
// Array mit zwei Objekten
var meinArray = [{Bild:['pic1.jpg'], Text: 'bla'},{Bild:['pic2.jpg'], Text: 'blubb'}];

// Funktionsdeklaration
function meineFunktion_1(arr){
    for(var i=0; i<arr.length;i++){
        document.write("<img src='.." + arr[i].Bild[0] + "' onMouseOver='meineFunktion_2(" + arr[i] + ");'>");
    }
}

// Funktionsaufruf
meineFunktion_1(meinArray);

Haken tut es beim Aufruf der Parameter von meineFunktion_2, da gibt mir Chrome einen Syntaxfehler, aber ich finde ihn einfach nicht. Wenn ich aber statt arr[i] direkt das Objekt als meinArray[0] übergebe, funktioniert es. Warum? Zumal vorher der Ausdruck arr[i].Bild[0] völlig korrekt interpretiert wird.

Ich wäre echt dankbar, wenn mich jemand diesbzgl. erleuchten oder zumindest mir meinen Denkfehler zeigen könnte!
 
Haken tut es beim Aufruf der Parameter von meineFunktion_2, da gibt mir Chrome einen Syntaxfehler, aber ich finde ihn einfach nicht.
Ein Blick in den Quelltext reicht dann siehst du was meineFunktion_1 erzeugt:
HTML:
<img src='..pic1.jpg' onMouseOver='meineFunktion_2([object Object]);'><img src='..pic2.jpg' onMouseOver='meineFunktion_2([object Object]);'>
Das das nix wird darüber brauchen wir wohl nicht reden.

Davon ausgegangen das du immer ein Objekt aus meinArray übergeben möchtest könntest du Beispielsweise folgendes machen:
Javascript:
document.write("<img src='.." + arr[i].Bild[0] + "' onMouseOver='meineFunktion_2(meinArray["+i+"]);'>");
 
Erstmal Danke für Deine Antwort!

Dass Deine Lösung funktioniert ist mir schon klar, aber wahrscheinlich ist meine eigentlich Frage nicht ganz klar geworden.

Meine Frage ist: Wo ist der Unterschied zwischen arr["i"] und meinArray["+i+"] ? Denn ich übergebe doch meinArray an die Funktion, vereinfacht gesagt sollte doch arr === meinArray sein, oder nicht?
 
Das würde funktionieren wenn du meineFunktion_2() aufrufen würdest und arr[i] als Parameter übergibst.
Das tust du aber nicht sondern du schreibst da mit document.write ein bischen html.
Folglich macht deiner Variante im Prinzip folgendes
Javascript:
meinArray[i].toString();
Und meine:
Javascript:
'meinArray['+i.toString()+']';
 
Aaaaarrgghh****** *schlagmitderflachenhandvordenkopf* Du hast natürlich Recht und erübrigt jeden weiteren Kommentars.

Vielen, vielen Dank für die Erleuchtung und das Beseitigen des Brettes vor meinem Kopf!
 
Zurück