Показать сообщение отдельно
  #1 (permalink)  
Старый 18.10.2010, 16:18
Аватар для cyberx
Аспирант
Отправить личное сообщение для cyberx Посмотреть профиль Найти все сообщения от cyberx
 
Регистрация: 02.02.2010
Сообщений: 50

Проблема с селекторами
Добрый день. Недавно начал изучать javascript и решил написать функцию примерно как в jquery, но столкнулся с проблемой. Вот сам скрипт

function $Smarty(selector)
 {
	 
  this.undefined  = 'undefined';	
	 
  typeof selector === undefined ? this.selector = '' : this.selector = selector; 	 
			 	 
 };


$Smarty.prototype.trim =  function (string)
 {                
  return string.replace(/ /g,' ').replace(/(^\s+)|(\s+$)/g, "");
 }

$Smarty.prototype.getElement = function (id)
  {		 	
   if(id.substring(0,1) == '#')
    {
	 return document.getElementById(id.replace('#',''));	 
    }
	
   if(id.substring(0,1) == '.')
	{
     // будет выбирать по классам
    }

  }


$Smarty.prototype.select = function()
 {
   var arr = this.trim(this.selector).split(/\s+/),
       count = arr.length;

  if(count == 1)
   {
	return this.getElement(arr.slice(0,1).toString());
   } 				  
			    

  var elements = this.getElement(arr.slice(0,1).toString()).getElementsByTagName('*'),
	  last = this.getElement(arr.slice(count - 1).toString()),
	  i = 0;           

  for (i; i < elements.length; i++)
   {
	 if(elements[i] === last)
	  {	  				    
		return elements[i];
	  }
		
      }
	return false; 						 
   }






$Smarty.prototype.html = function(id)
 {
  return typeof id === this.undefined ? this.select().innerHTML : this.select().innerHTML = id; 	  						
 }


Используется так : new $Smarty('#one #two').html('test text');
Проблема с самыми селекторами, функция их неправильно обрабатывает. Надо найти в div one div two, искать по дочерним элементам, но я беру по document, значит со всей страницы. Не могу собрать алгоритм который искал бы по дочерним элементам. Попытался разобраться в jquery, но не понял как у них обрабатываются селекторы.
Ответить с цитированием