onkeyup etc. dynamisch zuweisen
Rambo0815
- javascript
wie weise ich einen objekt onKeyUp oder ähnliches zu?
document.getElementById("test").onKeyUp = functionxy("test","100);
ist das so richtig???
wie weise ich einen objekt onKeyUp oder ähnliches zu?
document.getElementById("test").onKeyUp = functionxy("test","100);
ist das so richtig???
Jein.
Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.
Struppi.
Hallo,
document.getElementById("test").onKeyUp = functionxy("test","100);
ist das so richtig???
Jein.
... ,der Eventname muß in JavaScript klein geschrieben werden und...
Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.
Mit freundlichem Gruß
Micha
wie weise ich einen objekt onKeyUp oder ähnliches zu?
document.getElementById("test").onKeyUp = functionxy("test","100);
ist das so richtig???
Jein.
Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.
Struppi.
wie kann ich dann dem onKeyUp die funktion zuweisen?
es soll ja dann bei dem erstellten Feld so funktionieren, als hätte ich einfach als Attribut geschrieben
onKeyUp="functionxy('test','100')";
wie weise ich einen objekt onKeyUp oder ähnliches zu?
document.getElementById("test").onKeyUp = functionxy("test","100);
ist das so richtig???
Jein.
Ein Eventhandler erwartet eine Funktionsreferenz, wenn der Rückgabewert der Funktion functionxy() eine solche ist, dann wird die Funktion beim auftreten des Events aufgerufen.
Struppi.
Bitte lass nur das stehen auf das du antworten möchtest und zitiere nicht komplett.
wie kann ich dann dem onKeyUp die funktion zuweisen?
Micha hat's ja schon gesagt, diesen Eventhandler gibt es nicht, der heißt in JS onkeyup
es soll ja dann bei dem erstellten Feld so funktionieren, als hätte ich einfach als Attribut geschrieben
onKeyUp="functionxy('test','100')";
onkeyup = function(e) {
functionxy('test','100');
};
übrigens ist in der Funktion this gleich dem Element, ich nehme an du brauchst den Parameter 'test' gar nicht.
Struppi.
onkeyup = function(e) {
functionxy('test','100');
};
fantastisch
danke!
ich muss mir mal angucken, warum das so ist
so richtig geschnallt habe ich das noch nicht, warum ich das so ummanteln muss
wie gesagt: DANKE!!
onkeyup = function(e) {
functionxy('test','100');
};fantastisch
danke!ich muss mir mal angucken, warum das so ist
so richtig geschnallt habe ich das noch nicht, warum ich das so ummanteln muss
Du musst nichts ummanteln, du musst dem Handler eine Funktionreferenz zuweisen. Das was du hier machst ist eine anonyme Funktion (weil sie keinen Namen hat). Es gibt aber auch andere Wege:
onkeyup = functionxy; // ohne Klammer!
So kannst aber keinen Parameter übergeben
3. onkeyup = functionxy('test','100');
Wenn functionxy() eine Funktionsreferenz zurück gibt.
function functionxy(p1, p2) {
return function(e) {
alert(p1 + '/' + p2);
}
}
Struppi.
Hallo,
bin mir nicht sicher, ob das hier passt, aber ich hatte ein ähnliches Problem, was mir in Verbindung mit xajax und diesem unsäglichen Browser (wie heißt er denn noch gleich...:)) ziemliches Kopfzerbrechen bereitet hatte.
Dazu benutze ich jetzt diese Funktion, um mögliche Probleme zu beseitigen:
function _addEventHandler(element, event, handler) {
var _tmp, _onevent;
if (!element || !event )
return false;
if (element.addEventListener) // DOM-konform
element.addEventListener(event, handler, false);
else {
_onevent = 'on'+event;
if (element.attachEvent) // IE
element.attachEvent(_onevent, handler);
else { // ältere Browser
_tmp = element[_onevent];
element[_onevent] = typeof _tmp == 'function' ? (function() { _tmp(); handler(); }) : handler;
}
}
}
die ich folgendermaßen aufrufe:
_addEventHandler($('openall'),"click",function (){[Funktionsinhalt]})
Gruß,
Manu
Hallo,
Und was ist das Problem dabei, was funktioniert nicht, was ist deine Frage? ;)
Mathias
Falls Du mich meinst: das war eine Lösung für mein Problem: dynamisch einen Event-Handler im IE zu setzen, so dass es auch mit bspw. xajax klappt...
Gruß,
Manu
Hi,
so richtig geschnallt habe ich das noch nicht, warum ich das so ummanteln muss
schreibst Du
obj.onkeyup = functionxy('test','100');
so wird die Funktion functionxy() _jetzt_ ausgeführt und dessen Rückgabe(!) in die onkeyup-Eigenschaft geschrieben. In annähernd 100% aller Fälle möchtest Du die Funktion jedoch ausführen, wenn das keyup-Event feuert; und dazu muss im entsprechenden onkeyup-Handler eine Funktion hinterlegt sein, die _dann_ ausgeführt wird.
Cheatah