
24.03.2015, 14:58
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Массив элементов
Приветствую! Пытаюсь сделать конструкцию вида $('.myclass li a'); - должно вернуть все элементы с тегами a. Остановился на этом моменте..
var $ = function(e) {
var getElement = function(e,el){
var el = (el)?el:document;
if(e.charAt(0) == '.')
{
var __e = el.getElementsByClassName(e.substring(1));
}
else if(e.charAt(0) == '#')
{
var __e = el.getElementById(e.substring(1));
}
else
{
var __e = el.getElementsByTagName(e);
}
return __e;
};
element = [];
var e = e.split(' ');
for(var i in e)
{
var _e = getElement(e[i],element[(element.length-1)]);
element.push(_e);
}
return _e;
}
|
|

24.03.2015, 15:04
|
 |
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
Зачем? Самая лучшая документация, это уже готовый и отлаженный велосипед, посмотрите библиотеки, как там реализовано.
А вообще есть такая вещь как querySelectorAll 
__________________
.
|
|

24.03.2015, 17:20
|
Аспирант
|
|
Регистрация: 24.03.2015
Сообщений: 92
|
|
может как-то так:
<html>
<head>
</head>
<foo id="foo">foo</foo>
<body>
<div class="foo">
<ul>
<li>
<span>span</span>
<a href="">foo</a>
</li>
<li>
<a href="">foo</a>
</li>
</ul>
</div>
<div class="foo">
<ul>
<li>
<a href="">foo</a><br>
<a href="">bar</a>
</li>
<li>
<a href="">foo</a>
</li>
</ul>
</div>
<script>
$=function(str){
var arr=str.split(" ")
var result=[]
;[].map.call(document.querySelectorAll(arr[0]), function(el){
return [].map.call(el.querySelectorAll(arr[1]), function(el){
return [].forEach.call(el.querySelectorAll(arr[2]), function(el){
result.push(el)
})
})
})
return result
}
console.log ($(".foo li a"))
</script>
</body>
</html>
|
|

24.03.2015, 17:23
|
 |
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от newuser1001
|
может как-то так:
|
постом выше было написано
Сообщение от Skipp
|
А вообще есть такая вещь как querySelectorAll
|
//console.log($(".foo li a"));
console.log(document.querySelectorAll(".foo li a"));
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|

24.03.2015, 17:27
|
Аспирант
|
|
Регистрация: 24.03.2015
Сообщений: 92
|
|
nerv_,
И что? ТС'a насколько я понял, интересует возможная реализация, а не то что есть или нет.
|
|

24.03.2015, 17:57
|
 |
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
newuser1001,
Вы не поняли, ваша реализация просто бредовая, так как всё это делается одной строкой и ваш код просто лишний.
С таким же успехом:
<html>
<head>
</head>
<foo id="foo">foo</foo>
<body>
<div class="foo">
<ul>
<li>
<span>span</span>
<a href="">foo</a>
</li>
<li>
<a href="">foo</a>
</li>
</ul>
</div>
<div class="foo">
<ul>
<li>
<a href="">foo</a><br>
<a href="">bar</a>
</li>
<li>
<a href="">foo</a>
</li>
</ul>
</div>
<script>
$=function(str){
return document.querySelectorAll(str);
}
console.log ($(".foo li a"))
</script>
</body>
</html>
__________________
.
|
|

24.03.2015, 18:02
|
Аспирант
|
|
Регистрация: 24.03.2015
Сообщений: 92
|
|
Skipp,
Да нет, это Вы не поняли, что пишете бред. Реализация интересна именно сама по себе, безотносительно сахара языка. К примеру, Если бы из языка убрали querySelectorAll что бы Вы делали? Пошли бы на курсы повышения квалификации? Подались бы в дворники? Фактически, это и есть Ваш реальный статус. Программист не должен рассуждать о программировании в терминах сахара языка.
Последний раз редактировалось newuser1001, 24.03.2015 в 18:05.
|
|

24.03.2015, 18:16
|
 |
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от newuser1001
|
Реализация интересна именно сама по себе, безотносительно сахара языка. К примеру, Если бы из языка убрали querySelectorAll что бы Вы делали?
|
твой код не просто 100% бред, я бы сказал 110% 
1. querySelectorAll не в языке, а в DOM
2. ты пытаешься эмулировать метод querySelectorAll с его же помощью. Это уже диагноз)
3. и при этом ты льешь г*вно на нормальных участников форума
Сообщение от newuser1001
|
Подались бы в дворники? Фактически, это и есть Ваш реальный статус
|
таким тут не место 
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|

24.03.2015, 18:24
|
Аспирант
|
|
Регистрация: 24.03.2015
Сообщений: 92
|
|
nerv_,
Я все сказал в предыдущем сообщении. Я не собираюсь отвечать каждой шавке.
|
|

24.03.2015, 23:40
|
Профессор
|
|
Регистрация: 03.02.2014
Сообщений: 238
|
|
Подскажите, кто знает, как в таком случае правильно вызвать функцию, к примеру, var div = d.createElement('div'); $(div).hide();?
var $ = function(e) {
var _e = (typeof e == 'object')?e:d.querySelectorAll(e);
if((typeof e != 'object') && (!_e[0]))
{
return null;
}
if(_e.length == 1)
{
var _e = _e[0];
}
//hide
_e.hide = function(){
[].forEach.call(_e,function(el){
el.style.display = 'none';
})
};
//show
_e.show = function(){
[].forEach.call(_e,function(el){
el.style.display = '';
})
};
return _e;
};
|
|
|
|