Добрый день. Недавно начал изучать 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, но не понял как у них обрабатываются селекторы.