Objektname als Variable
Jens
- javascript
0 Andreas-Lindig0 Kurt Felix0 Jens0 Struppi0 Jens0 Kurt Felix0 Struppi
0 Kurt Felix
Hallöchen liebe Leute,
ich bin noch recht grün mit dem Java-Scripten und deshalb mögen die Cracks hier im Forum mir verzeihen. Selbstverständlich habe ich die Such-Funktion bemüht bin aber dort nicht so recht schlau geworden.
Mein Problem:
Statt eine Grafik mit der fortlaufenden Nummerierung (also window.document.images[nummer].src = Bildname.src ) anzusprechen soll es über den Objektnamen gehen.
Ich habe also eine Grafik mit
<img blabla name="alfred">.
Klar kann ich die mit
window.document.alfred.src = Bildname.src;
direkt ansprechen. Jetzt habe ich aber mehrere Grafiken deren Objektnamen ich als Variable in eine Funktion übergeben will. Blauäugig schrub ich also
function Bildwechsel(Objektname,Bildname)
{window.document.Objektname.src = Bildname.src;}
in der Hoffnung daß wenn die Variable "Objektname" bspw. "alfred" enthält, dann die entsprechene Grafik angesprochen wird. Wird aber nicht, es tut sich nichts.
Bin dankbar für jeden Hinweis,
beste Grüsse,
Jens
Hallo Jens,
function Bildwechsel(Objektname,Bildname)
{window.document.Objektname.src = Bildname.src;}
Du übergibst hier einen String: 'alfred'. In Deinem Objektzugriff steht dann so ungefähr: window.document.'alfred'.src - das geht nicht. Versuchs mal mit eval(), da kannst Du Strings und Objekte mit '+' kombinieren und aus dem Ganzen ein Objekt zaubern.
Gruß, Andreas
Du übergibst hier einen String: 'alfred'. In Deinem Objektzugriff steht dann so ungefähr: window.document.'alfred'.src - das geht nicht. Versuchs mal mit eval(), da kannst Du Strings und Objekte mit '+' kombinieren und aus dem Ganzen ein Objekt zaubern.
eval ist in 99% aller Fälle überflüssig und absolut schädlich. Es ist langsam, man kann schlecht Fehler finden und es ist unnötig.
Versuch's mal mit: window.document['alfred'].src
Struppi.
Nach einigem rumprobieren hatte ichs dann :
Die Funktion heißt jetzt
function Bildwechsel(Objektname,Bildname) {
bildobjekt=eval(Objektname);
bildobjekt.src = Bildname.src; }
und aufgerufen wird sie mit
<a onMouseOver="Bildwechsel(alfred,neuesbild)" ...
also macht "eval" aus "alfred" tatsächlich "window.document.alfred"
Einfacher als man denkt...
Besten Dank,
Gruß,
Jens
also macht "eval" aus "alfred" tatsächlich "window.document.alfred"
Einfacher als man denkt...
das ist aber Mist!
eval ist hier nicht nötig und macht das Skript Fehleranfällig und um einiges langsamer. Zumal das in normalen Browsern nicht funktioniert, was du das machst.
function Bildwechsel(Objektname,Bildname) {
bildobjekt= window.document[Objektname];
bildobjekt.src = Bildname.src;
}
struppi.
Hallo Jens,
window.document.alfred.src = Bildname.src;
ist Unsinn!
* * *
html:
<a href="#" onmouseover="change_image(alfred,'alfred_1.jpg');" onmouseout="change_image(alfred,'alfred_0.jpg');"><img name="alfred" src="alfred_0.jpg" border="0" alt="" /></a>
* * *
javascript:
function change_image(imageID,imageSrc) {
imageID.src=imageSrc;}
* * *
Gruß,
Kurt
Ja hallöchen
das ist ja noch einfacher...
statt
window.document.alfred.src = Bildname.src;
muß es einfach nur heißen
alfred.src = Bildname.src;
JavaScript kann so einfach sein...
Grunz - nun ja ich bin ja noch am lernen
Besten Dank + beste Grüße,
Jens
Ja hallöchen
das ist ja noch einfacher...
statt
window.document.alfred.src = Bildname.src;
muß es einfach nur heißen
alfred.src = Bildname.src;
Das ist falsch!
standardmäßig spricht dein Browser immer window.... an, dann heißt dein obiges Beispiel window.alfred.src = Bildname.src;
d.h in deinem konkreten Falle wird aus der Zuweisung:
window.alfred.src = window.alfred.src;
Was du aber nciht willst. Probier es einfach mal in einem richtigen Browser aus.
<script type="Text/JavaScript">
alfred = "ich bin alfred";
function test()
{
alert(alfred);
alert(window.alfred);
alert(window.document.alfred);
}
</script>
</head>
<body >
<img width="100" height="100" src="test.jpg" name="alfred" onclick="return test();">
</body>
</html>
struppi.
Ja hallöchen
das ist ja noch einfacher...
statt
window.document.alfred.src = Bildname.src;
muß es einfach nur heißen
alfred.src = Bildname.src;
Das ist falsch!
Hm ja pardon aber es funzt doch? Und ist identisch mit dem was Kurt Felix postete?
Was ist ein "richtiger" Brauser? Ich hudel mit Mozilla und IE, ab und zu noch mit Opera und selbst da läufts.
Es mag ja sein ( und ist garantiert auch so ) daß das für Puristen bzw. Validatoren Nonsens ist was ich da so zusammenprogrammiere aber solange es mit diesen drei Brausern läuft ist mir das wurscht.
Ich gebe aber gerne zu : Ich habe (noch, so Gott will) ein erhebliches Verständnisproblem mit der Java-Syntax bzw. mit dessen Sprach-Struktur und würde gerne absolut "sauberen" Quellcode ins Netz stellen.
Wo zur Hölle ist bspw. der Unterschied zwischen
window.document.alfred.src,
window.alfred.src,
und
alfred.src ?
Besten Dank für Aufklärung + beste Grüße,
Jens
Wo zur Hölle ist bspw. der Unterschied zwischen
window.document.alfred.src,
window.alfred.src,und
alfred.src ?
Ganz einfach ...
window.document.alfred.src
oder
window.alfred.src
... funktionieren nicht!
* * *
Wo hingegen ...
document.images["alfred"].src
-> "alfred" muss ein String sein, nicht das Objekt!
funktioniert!
Gruß,
Kurt
Hm ja pardon aber es funzt doch? Und ist identisch mit dem was Kurt Felix postete?
Das ja auch schon falsch war.
Wo zur Hölle ist bspw. der Unterschied zwischen
window.document.alfred.src,
window.alfred.src,und
alfred.src ?
Du hast das Beispiel nicht ausprobiert?
OK:
window.document.alfred.src,
hier sprichst du ein attribut des Objektes alfred an, das ein Objekt von document ist, dass wiederrum ein Unterobjekt von window ist.
window.alfred.src,
hier sprichst du ebenfalls ein Attribut des Objektes alfred an, das aber in deisem Falle ein Unterobjekt von window ist.
alfred.src ?
Hier wird self.alfred angesprochen und self ist in diesem Falle window, d.h. Fall 2 und 3 sind gleich sprechen aber nicht das Bild an, dass ja ein Teil des Dokumentes ist.
Struppi.
Hallo Jens,
alfred.src = Bildname.src;
Eben NICHT Bildname.src, sondern NUR Bildname!
alfred.src=Bildname;
Wenn Du Deine Bilder in einem separaten Ordner ablegst - was zu empfehlen ist - dann muss dies natürlich noch ergänzt werden:
alfred.src="Pfad/"+Bildname;
Gruß,
Kurt