Array auslesen / OO Programmierung

Moin Moin,

war schon lange nicht mehr hier und komm eigentlich aus der PHP section. Nu hab ich aber ein JS Problem und komme nicht weiter.

Ich habe in einer website (hier anguckbar ) ein bischen Schnick Schnack mit Bildern integriert (mouseOver, mouseOut usw...). Fährt man mit der maus über die einzelnen Städtenamen, erscheinen s/w Bilder. Klickt man darauf erscheint das Bild farbig und die einzelnen Details (Adr. usw.) erscheinen. Aufgabe ist nun, auch den Text unterm Bild mit mouseOver (in grau) sichtbar zu machen.

Der JS Code wird durch PHP generiert. Leider weiss ich nicht, wie ich nun auf die einzelen Elemente im Array zugreifen soll. Die einzelnen Array Einträge sind wiederum Objekte :

Code:
function immo_objekte(str, plz, ort, fond_vol, fond_jahr, miet_flaeche) { 
	this.str = str;
	this.plz = plz;
	this.ort = ort;
	this.fond_vol = fond_vol;
	this.fond_jahr =fond_jahr;
	this.miet_flaeche = miet_flaeche;
	this.zeige_str = zeige_str;
}

//Bsp für ein Objekt (davon gibt es ca. 40)

obje = new Array();
obje[1] = new immo_objekte("Blankschmiede 2", "31855", "Aerzen", "4940", "1997", "2917");

Soweit so gut. Alles wird generiert ... aber wie greife ich nun drauf zu? Es gibt ja in JS keine Assoziative Arrays. Deshalb die Kiste mit den Objekten ... Das habe ich bislang für die Ausgabe:

Code:
function change_text(id) {
	document.getElementById("str").firstChild.nodeValue = obje[id].str;
}

Und der link sieht so aus:

Code:
<a href="/index.php?include=objekte&objekt=1&seite=" onMouseOver="preview('img0');change_text(1);" onMouseOut="preview_out('img0');" class="eingang">AERZEN</a>

... klappt aber leider nicht .... Kann jemand helfen?

Herzlichen Dank und Beste Grüsse

Andy
 
Ehrlich gesag verstehe ich nicht, warum du keine mehrdimensionalen Arrays verwendest. Außerdem gibt es selbstverständlich assoziative Arrays in JavaScript (oder sowas in der Art). Wie im Link beschrieben, kannst du es machen. Die meisten Browser interpretieren auch ganz normal definierte assoziatiove Arrays, wenn du damit leben kannst, das die length immer 0 oder undifened bzw. flase ist.
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head><title>Untitled</title><meta name="AUTHOR" content="con-f-use@gmx.net" /><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   
   </head><body>
   
   <script type="text/javascript"><!--
   	obje = new Array();
   	obje['ich'] = 'ich bin schlau';
   	obje['du'] = 'du bist schlauer';
   	
   	document.write(obje["ich"]);
   //--></script>

Außerdem fehlt schlicht und einfach das zeige_str oben bei den Parametern, was das Script an der Stelle this.zeige_str in der Objektfunktion ( immo_objekte() ) stoppen lässt. Entweder du löscht die Zeile this.zeige_str = zeige_str; die ich ohnehin merkwürdig finde oder du schreibst das zeige_str in die Klammer dazu.
 
Zuletzt bearbeitet:
Im Endeffekt ist das, was dort bei SelfHTML beschrieben wird, dasselbe, was du mit deinen Objekten tust...nur mit anderer Syntax.

Der letzte Abschnitt bei SelfHTML geht nochmal auf das Wichtigste dieser "assoziativen Arrays" ein:
sie besitzen weder Eigenschaften von Arrays, noch sind Methoden von Arrays auf sie anwendbar....daher sind es keine wirklichen "Arrays".

Ob du es nun mit deiner Methode, oder mit der bei SelfHTML beschriebenen machst, ist egal, weil das Ergebnis identisch ist.

Dass es nicht funktioniert, liegt nur daran, dass zeige_str nicht definiert ist :-)
 
o.k. zwei Dinge:

1. die Aussage dass es in JS keine assoziativen Arrays gibt ist wohl nicht ganz richtig. Ich habe eine (fast identsiche) Seite von SelfHtml gefunden, inwelcher genau das Gegenteil behauptet wird. Hm ... sorry ...

http://www.validome.org/doc/HTML_ge/javascript/objekte/array.htm

2. die Zeile this.zeige_str = zeige_str; ist aus einem Objektorienteirten Ansatz. Bedeutet dass die Methode zeige_str aufgerufen wird um den Strassennamen anzuzeigen. Hier werden keine () Klammern geschrieben. Habe die Methode aber nicht gepostet ... sorry

Leider funktioniert es auch nicht, wenn ich die Zeile rausnehme. Meine Grundlegende Frage war eigentlich.:

Wie greife ich auf die Elemente diese Arrays zu:

Code:
function immo_objekte(str, plz, ort, fond_vol, fond_jahr, miet_flaeche) { 
	this.str = str;
	this.plz = plz;
	this.ort = ort;
	this.fond_vol = fond_vol;
	this.fond_jahr =fond_jahr;
	this.miet_flaeche = miet_flaeche;
}


obje = new Array();
obje[1] = new immo_objekte("Blankschmiede 2", "31855", "Aerzen", "4940", "1997", "2917");

obje = new Array();
obje[4] = new immo_objekte("Stukenbrocker Straße 7-9", "32832", "Augustdorf", "3262", "2002", "1919");

obje = new Array();
obje[3] = new immo_objekte("Töddinghausener Straße 150", "59192", "Bergkamen", "17780", "2000", "11233");

obje = new Array();
obje[2] = new immo_objekte("", "46000", "Bocholt", "3018", "1990", "0");

Kannst Du mir das sagen? (ich geh mal davon aus :-)) ) .....

AHA! Und da ist der Fehler! Gerade beim Post durchsehen aufgefallen:

es ist natürlich falsch jedesmal obje = new Array(); zu schreiben .... Das war in einer Schleife von PHP fälschlicherweise drin .... das hat ie Fehlermeldung "obje[...] ist null oder kein Objekt hervorgerufen, da es ja jedes Mal überschrieben wird ...

Trotzdem Danke ...

Wenn Du magst lösche die Posts ...
 
Zuletzt bearbeitet:
Naja, also das Beispiel, dass ich gepostet hab funktioniert bei mir in Gecko, Opera, IE und NS 4.8 insofern gibt es sie, denn sie werden ja irgentwie interpretiert...

Hört sich zwar ein wenig nach "Ich denke also bin ich" an, aber immerhin kann man mit denen arbeiten, auch wenn keine Arraymethoden drauf angewandt werden können.
 
Zuletzt bearbeitet:
ne ne ... :-) ... ich weiss es nur nicht 100%

das ging mir hier grad zu schnell ... und ehrlich gesagt ... Ihr seid in JavaScript viel fitter wie ich. Ich warte mal wer gewinnt :-) und dem glaub ich dann ... ha ha ha
 
@con-f-use
Ja, es funktioniert, es ist aber kein assoziativer Array:-)

Du denkst, du sprichst die Elemente ich/du des assoziativen Arrays "obje" an....
in Wirklichkeit sprichst du aber die Eigenschaften ich/du des Objektes "obje" an.
 

Neue Beiträge

Zurück