Funktionsobjekt

rambo

Mitglied
Hallo,

ich habe vor einen eigenen Eventhandler zu basteln:

Code:
test1 = function(test) {
	alert(test);
	};
window.onload = function() {
	test1("qw").test2();
	};

Aufgerufen wird dieser dann so:

Code:
test1("qw").test2() = function () {
	alert("qwer");
	}

test1("qw").test2(); wird erst vom Script aufgefufen, wenn es "so weit" ist, was hier jetzt einfach mal ist, wenn das Dokument geladen ist.

Es funktioniert aber irgendwie nicht... Es wird zwei mal alert(test); ausgegeben. Und es gibt zwei Fehler, dass test1() undefiniert ist.

Kann mit jemand helfen?
 
Hi.
Hallo,

ich habe vor einen eigenen Eventhandler zu basteln:

Code:
test1 = function(test) {
	alert(test);
	};
window.onload = function() {
	test1("qw").test2();
	};

Aufgerufen wird dieser dann so:

Code:
test1("qw").test2() = function () {
	alert("qwer");
	}

test1("qw").test2(); wird erst vom Script aufgefufen, wenn es "so weit" ist, was hier jetzt einfach mal ist, wenn das Dokument geladen ist.

Es funktioniert aber irgendwie nicht... Es wird zwei mal alert(test); ausgegeben. Und es gibt zwei Fehler, dass test1() undefiniert ist.
Du rufst überall test1 auf und verwendest dann den Rückgabewert der Funktion. Die Funktion gibt aber nichts zurück (bzw. undefined).

Javascript:
test1 = function(test) {
	alert(test);
	};

test1.test2 = function () {
	alert("qwer");
	}

window.onload = function() {
	test1("qw");
        test1.test2();
	};
Evlt. solltest du aber mal erklären was das überhaupt werden soll?

Gruß
 
Ich wollte halt nur eigene Eventhandler basteln, damit ich irgendwelche Aufgaben leichter lösen kann.

Z.B.:

Javascript:
dingsda('meinelement').onEmpty() = function() {
   alert("meinelement ist leer");
    }

HTML:
<input type="text" onblur="if (this.value == '') dingsda('meinelement').onEmpty();" id="meinelement" />

Halt sowas in der Art. Dass wenn mein Input leer ist, dass dann der Alert erscheint. Ich weiß, dass das auch viel leichter zu lösen ist, aber so könnte man das dann auf beliebige elemente verwenden usw. ...
 
Ich wollte halt nur eigene Eventhandler basteln, damit ich irgendwelche Aufgaben leichter lösen kann.

Z.B.:

Javascript:
dingsda('meinelement').onEmpty() = function() {
   alert("meinelement ist leer");
    }
Wenn so etwas machen willst, dann muß die dingsda Funktion eben auch ein Objekt zurückgeben welches eine onEmpty Funktion besitzt. Du darfst bei der Zuweisung an onEmpty natürlich die Funktion nicht aufrufen, das macht keinen Sinn.
Javascript:
function dingsda(id) {
  return document.getElementById(id);
}

dingsda("meinelement").onEmpty = function () {
  // mach was cooles
}
Gruß
 
Aber jetzt habe ich ja das Problem, dass es onEmpty nicht gibt und ich diesen Eventhandler selbser basteln muss...
 
Hi,

"Hä?" heißt in einem vernünftigen und respektvollen Umgangston noch immer "Wie bitte?".

Man kann sich nicht mal eben seine eigenen Event-Handler "basteln", die von den Browsern dann auch interpretiert werden.

Dies hat deepthroat mit seinem letzten Beitrag zum Ausdruck bringen wollen.

Welche dir zur Verfügung stehen, kannst du dieser Übersicht entnehmen.

mfg Maik
 
Moin,

um mal über die Fehlerursache aufzuklären:

Code:
test1("qw").test2() = function () {
	alert("qwer");
	}

Das geht nicht so einfach.
Das wird schrittweise betrachtet, bis zu jedem Punkt.
Es wird also als Rückgabe von test1("qw") in jedem Fall ein Objekt erwartet.....du hast aber nirgends Rückgabewerte.

So herum könnte bspw. etwas draus werden:
Code:
<script type="text/javascript">
<!--
test1 = function(test) 
{
	alert(test);
	return {test2:function(){alert('qwer');}};
};

window.onload = function() {
	test1("qw").test2();
	};
//-->
</script>
 

Neue Beiträge

Zurück