Вход

Просмотр полной версии : Как присвоить width из data ?


Максим Ученик
04.03.2020, 05:28
Есть не известное кол-во блоков в него я сгенерировал 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
Так же не понятно зачем вообще цикл в цикле... :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