myhandle.onclick = mojafunkcja (parametr1, param2);
Jest to typowy błąd dla początkujących na poziomie JavaScript, a nie coś, co biblioteki naprawdę mogą naprawić.
Nie jesteś przypisując myfunction
jako handler click, jesteś nazywającmyfunction
, z param1 i param2 jako argumenty i przypisywanie wartości zwracanej przez funkcję do onclick
. myfunction
nic nie wróci, więc chcesz być przypisanie undefined
do onclick
, co miałoby żadnego wpływu ..
Co masz na myśli to, aby przypisać odniesienie do myfunction
sama:
myhandle.onclick= myfunction;
zdać działa kilka dodatkowych argumentów, musisz zrobić zamknięcie zawierające ich wartości, co zwykle odbywa się za pomocą anonimowej funkcji inline. To może zająć przechodząc zdarzenie na zbyt jeśli trzeba (choć tak czy inaczej trzeba jakiś plan awaryjny dla IE, gdzie obiekt zdarzenia nie jest przekazywana jako argument):
myhandle.onclick= function(event) {
myfunction(param1, param2, event);
};
W ECMAScript piąta edycja, która będzie przyszłą wersję JavaScriptu, możesz napisać to jeszcze łatwiej: (. z window
jest obojętne wart this
których nie trzeba będzie w tym przypadku)
myhandle.onclick= myfunction.bind(window, param1, param2);
Jednakże, ponieważ wiele dzisiejszych przeglądarek nie działa t obsługuje Piąte Wydanie, jeśli chcesz użyć tej metody, musisz podać implementację dla starszych przeglądarek.Niektóre biblioteki zawierają już jeden; tutaj jest inny samodzielny.
if (!('bind' in Function.prototype)) {
Function.prototype.bind= function(owner) {
var that= this;
var args= Array.prototype.slice.call(arguments, 1);
return function() {
return that.apply(owner,
args.length===0? arguments : arguments.length===0? args :
args.concat(Array.prototype.slice.call(arguments, 0))
);
};
};
}
wielkie dzięki! to wyjaśnia pięknie. – Rajat