Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как присвоить width из data ? (https://javascript.ru/forum/events/79646-kak-prisvoit-width-iz-data.html)

Максим Ученик 04.03.2020 05:28

Как присвоить width из data ?
 
Есть не известное кол-во блоков в него я сгенерировал svg и так же хочу из data-num сделать style.left для элемента svg.

Но получается что left для всех line присваивается из нижнего data-num.

Что я делаю не так ?

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

ksa 04.03.2020 07:32

Цитата:

Сообщение от Максим Ученик
Что я делаю не так ?

Что-то ты там накрутил... :blink:

Вот это
let num = parents[i].parentElement.lastElementChild.firstElementChild.getAttribute("data-num");
parents[i].style.left = num + "%";

Зачем делаешь в цикле?
for(let k=0; k<lines.length; k++){
   // ...
}

ksa 04.03.2020 07:36

Вот это
let num = parents[i].parentElement.lastElementChild.firstElementChild.getAttribute("data-num");

Можно заменить на такое
let num = parents[i].parentElement.querySelector('line').getAttribute("data-num");

Все будет понятнее... ;)

ksa 04.03.2020 07:40

Так же не понятно зачем вообще цикл в цикле... :blink:
for(let i=0; i<parents.length; i++){
	for(let k=0; k<lines.length; k++){
	}
}

У тебя ведь количество элементов svg и line совпадает... Можно обойтись и одним циклом.

Максим Ученик 04.03.2020 10:10

Цитата:

Сообщение от ksa (Сообщение 520929)
Так же не понятно зачем вообще цикл в цикле... :blink:
for(let i=0; i<parents.length; i++){
	for(let k=0; k<lines.length; k++){
	}
}

У тебя ведь количество элементов svg и line совпадает... Можно обойтись и одним циклом.

я уже сделал то что хотел: https://codepen.io/topicstarter/pen/rNVzowd но меня смущает что я налепил очень много parentChild


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