Objekt an Konstruktor übergeben
Objekt an Konstruktor übergeben
- javascript
0 Michael0 Daniel Thoma0 Michael
Hallo,
ich habe ein Problem mit dem erzeugen von eigenen Objekten.
Ich habe ein eigenes Objekt (d.h. ich will es haben) namens area.
Dahinter verbirgt sich ein Button (DIV+IMAGE) und ein paar Funktionen um diesen zu manipulieren. Und um diesen Button zu manipulieren muss ich dem Konstruktor erst einmal ein das DIV als Objekt übergeben, damit er weiss mit was er etwas machen soll ?!
also habe ich folgende Konstruktor-Funktion geschrieben:
function area(button, button_b1, button_b2, clip_delay, image)
{
alert("Konstruktor: "+ button); // hier kommt unknown
this.button = button;
this.button_b1 = button_b1;
this.button_b2 = button_b2;
this.clip_delay = clip_delay;
this.image = image;
this.clipit = clipit;
}
und noch eine Funktion die den Button manipulieren soll namens clipit()
function clipit()
{
alert("Methode: "+this.button); // hier kommt aber unknown
if(this.button.clip.right!=this.button.document.width-9)
{
this.button_b2.left++;
this.button.clip.right++;
this.clip_delay+=delay;
setTimeout("this.clipit()", this.clip_delay);
}
else
{
this.button.document.images[0].src=this.image;
this.button.clip.right=this.button.document.width;
this.button_b1.visibility="hide";
this.button_b2.visibility="hide";
}
}
ein neues Objekt erzeuge ich so:
var about_button = new area(window.document.about, window.document.about_b1, window.document.about_b2, 0, "images/about-button-grey.gif");
wobei window.document.about, about_b1 und about_b2 alles DIVs sind, also Layer Objekte. Wenn das Objekt erfolgreich übergeben wurde sollte die Ausgabe des alerts "ObjectLayer" sein, es kommt allerdings "unknown". Das Objetk wurde also nicht richtig übergeben ?! Wenn ich das ganze aber mit einer Zahl oder mit Text versuche klappt es. Wo liegt mein Problem ??? Wenn ich ein Objekt auf diese Art und Weise einer "normalen" Funktion übergebe gibt es keine Probleme damit, nur mit dem Konstruktor !
danke und tschüss Michael
ps: Ich benutze NN 4.73 für Linux.
Hallo,
diese Nachricht da oben stammt von mir....irgendwie hab ich das Feld Namen fehlinterpretiert :-)
Ich sitze heute wahrscheinlich schon viel zu lange vor meinem PC :-)#
tschüss Michael
Hallo Michael
Prinzipell tut das was du willst. Zumindest mit nn.
also habe ich folgende Konstruktor-Funktion geschrieben:
function area(button, button_b1, button_b2, clip_delay, image)
{
alert("Konstruktor: "+ button); // hier kommt unknown
Bist du da sicher oder hast du das "nicht" vergessen. (Weil du unten aber sagst
this.button = button;
this.button_b1 = button_b1;
this.button_b2 = button_b2;
this.clip_delay = clip_delay;
this.image = image;
this.clipit = clipit;
}und noch eine Funktion die den Button manipulieren soll namens clipit()
function clipit()
{
alert("Methode: "+this.button); // hier kommt aber unknown
Hier!!!
Wie rufst du clipit auf? Über die Referenz auf das Object
Tschüs
Daniel
Hallo Daniel
Prinzipell tut das was du willst. Zumindest mit nn.
Prinzipiell sollte es das schon, es macht es nur nicht :-(
Es funktioniert nicht mit Objekten als Übergabe an den Konstruktor...die kommen erst gar nicht an habe ich das Gefühl !
Vielleicht ist das ja auch wieder ein mal einer der leider unzähöig vorkommenden Bugs im Netscape (aus eigener leidiger Erfahrung herausbekommen)
Ich freue mich schon das ganze auf den sch.... IE zu portieren :-)
Wie rufst du clipit auf? Über die Referenz auf das Object
Ich rufe die Funktion über about_button.clipit(); auf. Dann kommt aber die "Fehlermeldung" wie ich sie im Quelltext beschrieben habe!
Natürlich wird im Quelltext zuerst die Funktion clipit() definiert und dann erste der Konstruktor und danach die Instanzierung (oder wie das bei JavaScript auch immer heisst)
tschüss Michael
Hallo Michael
An dem Teil deines Codes, kann man es nicht nachvollziehen.
Gibts die ganze Datei irgendwo zum Testen?
Das Beispiel tut mit NN ohne Probs.
<HTML>
<HEAD>
<SCRIPT>
function con(obj)
{
alert(obj)
this.obj = obj;
this.func = func;
}
function func()
{
alert(this.obj);
}
function test()
{
a = new con(document.lay);
a.func();
}
</SCRIPT>
</HTML>
<BODY>
<A href="javascript:test()">test</A>
<LAYER name="lay" top=100 left=0>
text text text
</LAYER>
</BODY>
</HTML>
Tschüs
Daniel