Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.03.2015, 14:58
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 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;
}
Ответить с цитированием
  #2 (permalink)  
Старый 24.03.2015, 15:04
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Зачем? Самая лучшая документация, это уже готовый и отлаженный велосипед, посмотрите библиотеки, как там реализовано.
А вообще есть такая вещь как querySelectorAll
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 24.03.2015, 17:20
Аспирант
Посмотреть профиль Найти все сообщения от newuser1001
 
Регистрация: 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>
Ответить с цитированием
  #4 (permalink)  
Старый 24.03.2015, 17:23
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от newuser1001
может как-то так:
постом выше было написано
Сообщение от Skipp
А вообще есть такая вещь как querySelectorAll
//console.log($(".foo li a"));
console.log(document.querySelectorAll(".foo li a"));
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2015, 17:27
Аспирант
Посмотреть профиль Найти все сообщения от newuser1001
 
Регистрация: 24.03.2015
Сообщений: 92

nerv_,
И что? ТС'a насколько я понял, интересует возможная реализация, а не то что есть или нет.
Ответить с цитированием
  #6 (permalink)  
Старый 24.03.2015, 17:57
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 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>
__________________
.
Ответить с цитированием
  #7 (permalink)  
Старый 24.03.2015, 18:02
Аспирант
Посмотреть профиль Найти все сообщения от newuser1001
 
Регистрация: 24.03.2015
Сообщений: 92

Skipp,
Да нет, это Вы не поняли, что пишете бред. Реализация интересна именно сама по себе, безотносительно сахара языка. К примеру, Если бы из языка убрали querySelectorAll что бы Вы делали? Пошли бы на курсы повышения квалификации? Подались бы в дворники? Фактически, это и есть Ваш реальный статус. Программист не должен рассуждать о программировании в терминах сахара языка.

Последний раз редактировалось newuser1001, 24.03.2015 в 18:05.
Ответить с цитированием
  #8 (permalink)  
Старый 24.03.2015, 18:16
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

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

nerv_,
Я все сказал в предыдущем сообщении. Я не собираюсь отвечать каждой шавке.
Ответить с цитированием
  #10 (permalink)  
Старый 24.03.2015, 23:40
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 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;
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить массив без повторяющихся элементов truten Общие вопросы Javascript 5 15.12.2013 20:35
Собрать массив из элементов DOM Fairy-Wilbury Events/DOM/Window 4 13.09.2013 17:30
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов rjabijj Общие вопросы Javascript 6 06.07.2012 21:34
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов. Drimmer Серверные языки и технологии 0 02.07.2012 18:22