Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сформировать массив ? (https://javascript.ru/forum/dom-window/78086-kak-sformirovat-massiv.html)

maxim1978 24.07.2019 17:05

Как сформировать массив ?
 
Я хочу получить по клику на кнопку всю информацию которая относится
только к его родителю т.е получить всё содержимое тегов.

Другими словами я хочу при клике на кнопку получить вот такое:

['какая то карточка 4','http://placehold.it/200/fcc','Какоето описание 4 которое может быть разное','какая то дополнительная 4 информация','40','']


У меня почти получилось, я получил все блоки, всё описание всех тегов внутри но вот при клике на копку собрать массив не могу , помогите разобраться

https://codepen.io/topicstarter/pen/pMyGdy

laimas 24.07.2019 17:34

Ну наверное не такой массив, а с вложениями, иначе как им оперировать:

var result = document.getElementById("result");
var buttons = [...document.querySelectorAll(".res")];

[...buttons].forEach((button) => {
  button.addEventListener('click', elements);
});

function elements() {
   var arr = [...document.querySelectorAll(".item")].map((a) => {
        return [...a.children].map((b) => {
            return b.nodeName=='IMG' ? b.src : b.textContent;    
        })
   });
   
   console.log(arr);	
}

maxim1978 24.07.2019 17:44

а почему там сразу все выводятся?
вот видео того что выводится : https://www.dropbox.com/s/drjuj5gwht...-24_204925.mp4

laimas 24.07.2019 17:48

Цитата:

Сообщение от maxim1978
а почему там сразу все выводятся?

То есть нужно только по текущей?

maxim1978 24.07.2019 17:52

ну да, все у меня и так выводятся без проблем, и можно ещё не в новом формате код? я только осваиваю js и новый формат я очень трудно понимаю

laimas 24.07.2019 17:58

Ну тогда так:

function elements() {
   
   var arr = [...this.parentNode.children].map((a) => {
        return a.nodeName=='IMG' ? a.src : a.textContent;    
   });
   
   console.log(arr)

}


Вы же пишите document.querySelectorAll(".item"), а зачем, если получать только текущую. И видимо сама то кнопка не нужна, значит нужно так:

var arr = [...this.parentNode.children].slice(0, -1).map((a) => { ....

maxim1978 24.07.2019 18:03

Цитата:

Сообщение от laimas (Сообщение 510620)
Ну тогда так:

function elements() {
   
   var arr = [...this.parentNode.children].map((a) => {
        return a.nodeName=='IMG' ? a.src : a.textContent;    
   });
   
   console.log(arr)

}


Вы же пишите document.querySelectorAll(".item"), а зачем, если получать только текущую. И видимо сама то кнопка не нужна, значит нужно так:

var arr = [...this.parentNode.children].slice(0, -1).map((a) => { ....


Огромное спасибо - действительно работает ...а я уже три дня не могу это сделать ..спасибо


Часовой пояс GMT +3, время: 15:31.