Вам необходимо привязать параметр к вашей функции.Я собираюсь скопировать вставить функцию из Ext-JS, которая позволяет вам сделать это. Предупреждение : не для начинающих
/**
* Create a new function from the provided <code>fn</code>, change <code>this</code> to the provided scope, optionally
* overrides arguments for the call. (Defaults to the arguments passed by the caller)
*
* @param {Function} fn The function to delegate.
* @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
* <b>If omitted, defaults to the browser window.</b>
* @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
* @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
* if a number the args are inserted at the specified position
* @return {Function} The new function
*/
function bind(fn, scope, args, appendArgs) {
var method = fn,
applyArgs;
return function() {
var callArgs = args || arguments;
if (appendArgs === true) {
callArgs = Array.prototype.slice.call(arguments, 0);
callArgs = callArgs.concat(args);
}
else if (typeof appendArgs == 'number') {
callArgs = Array.prototype.slice.call(arguments, 0); // copy arguments first
applyArgs = [appendArgs, 0].concat(args); // create method call params
Array.prototype.splice.apply(callArgs, applyArgs); // splice them in
}
return method.apply(scope || window, callArgs);
};
}
Вы можете использовать его как
function onChange(e, customParameter) {
// Whatever code
}
document.getElementById("selectel").onchange = bind(onChange, null, ["customParameter"], true);
Когда вызывается ваш обработчик, к параметрам, передаваемым аргументами, добавляются дополнительные параметры.обработчик события (объект события).
В этой функции много мяса, поэтому не стесняйтесь задавать дополнительные вопросы.
Вот jsfiddle, чтобы увидеть его в действии http://jsfiddle.net/yBhG6/