За последние 24 часа нас посетили 23786 программистов и 1719 роботов. Сейчас ищет 1741 программист ...

Получить массив элементов.

Тема в разделе "JavaScript и AJAX", создана пользователем AlexandrS, 7 май 2018.

  1. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    HTML:
    1.     <img src="#" name="prm1">
    2.     <img src="#" name="prm7">
    3.     <img src="#" name="prm15">
    4.     <img src="#" name="prm3">
    5.     <img src="#" name="prm5">
    6.     <img src="#" name="prm10">
    7.     <img src="#" name="prm11">
    8.     <img src="#" name="prm4">
    9.     <img src="#" name="prm9">
    Подскажите, как можно получить массив элементов чтоб в этом массиве были значения заключенные в "name" и затем обращаться к этим элементам по значению имени?
    Т.е. по сути у меня должен получиться массив [prm1, prm7, prm15, prm3, prm5, prm10, prm11, prm4, prm9]
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Если вам нужен массив значений атрибута name, которого никогда не было у элемента <img>:
    Код (Javascript):
    1. const names = Array.from(document.querySelectorAll('img')).map(el => el.name);
     
    AlexandrS и TeslaFeo нравится это.
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ппц js читерский язык)
    Я бы перебирал элементы в forEach(), а тут всё в одну строку...
    Еще учиться и учиться)
     
    AlexandrS нравится это.
  4. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Благодарю!
    --- Добавлено ---
    Всё ни как не мог начать хоть как-то изучать JS и тут решил озадачить себя решением одной задачи :)
    Буду так потихоньку ковырять и изучать.
    --- Добавлено ---
    Это верно, но HTML прощает :)
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    так кто мешает document.querySelectorAll('img').forEach(item => console.log(item.name))
     
    AlexandrS нравится это.
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @nospiou ни что не мешает. Просто у @Deonis решение крассивее)
     
    AlexandrS нравится это.
  7. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Это с чего вдруг? У него решения более затратное по ресурсам. map это для реактивности. В обычном js его практически не используют. Плюс мое решение короче
     
    AlexandrS нравится это.
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    твоё решение выводит элементы в консоль, а нужно сложить их в массив.
    для этого в предыдущей строке нужно объявить переменную массивом и пушить в массив элементы внутри функции)
    а если мы заговорили о ресурсах, то деревянный смартфон, который почувствует разницу в ресурсах не поддерживает такой синтаксис функций)
     
    AlexandrS нравится это.
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну так то да. Только в реальной жизни никто просто так элементы не выбирает над ними сразу что то делают как раз внутри foreach)
     
    AlexandrS нравится это.
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    значит я мыслил правильно. Спасибо, что утешил :)
     
    AlexandrS нравится это.
  11. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @nospiou, @TeslaFeo, вот вы нашли тему для обсуждения :) Если бы в заголовке вопроса было написано "Конкурс красоты кода" или "У кого короче" (я про код), то тогда другое дело. Был вопрос, я машинально написал ответ в том синтаксисе, который использую сегодня. Вся песня.

    Кстати, о "короче":
    Код (Javascript):
    1. const names = [...document.querySelectorAll('img')].map(el => el.name);
     
    AlexandrS нравится это.
  12. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    :)
    Код (Javascript):
    1. [...$('img').get()].map(el => el.name)
    2. $.map($('img'), el => el.name)
     
    AlexandrS нравится это.
  13. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Благодарю всех за участие в теме!;)