Показать сообщение отдельно
  #1 (permalink)  
Старый 18.07.2010, 20:39
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Проблемы с функцией фильтрации элементов
Есть функция поиска элементов:

Q = function( params, context ) {
	if ( !( params instanceof Object || params instanceof Function ) ) {
		return params;
	}
	var elements = ( document || context ).getElementsByTagName( "*" ),
	finds = [];
	for ( var i = 0; i < elements.length; i++ ) {
		if ( typeof params != "function" ) {
			var a = 0,
			x = 0;
			for ( var z in params ) {
				if ( elements[i][z] == params[z] ) {
					a++;
				}
				x++;
			}
			if ( a == x ) {
				finds.push( elements[i] );
			}
		} else {
			if ( params.call( elements[i] ) ) {
				finds.push( elements[i] );
			}
		}
	}
	finds.params = params;
	finds.context = context;
	return finds;
};


И, собственно, сама функция фильтрования:

Object.prototype.filter = function( params, context ) {
	var wrapper = document.createElement( "DIV" );
	for ( var i = 0; i < this.length; i++ ) {
		wrapper.appendChild( this[i] );
	}
	return Q( params, wrapper );
}


Казалось бы, всё просто: заносим элементы в обёрточный DIV и ищем в нём через Q() элементы. Но консоль пишет

Цитата:
Uncaught exception: TypeError: Array.prototype.filter: callbackfn is not a callable object
В чём проблема?
Ответить с цитированием