Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Поймать выделенный элемент (https://javascript.ru/forum/events/85528-pojjmat-vydelennyjj-ehlement.html)

ureech 06.10.2023 17:30

Поймать выделенный элемент
 
Всем привет.

function addAdditional(el) {
    var colItem = checkOrder.childNodes
    var photo_title = el.dataset.title
    var photo_price = el.dataset.price
    var div_main = document.createElement('div')
    div_main.classList.add('col-main', 'row')
    var div_text = '<div class="text-left col-10"><span>' + photo_title + '</span></div>'
    div_main.innerHTML = div_text
    for (var i = 0; i < colItem.length; i++) {
        if (colItem[i].classList.contains('click')) {
            var date = colItem[i].dataset.dayhour
            for (var j = 0; j < additional.length; j++) {
                if (date == additional[j].dataset.dayhour) {
                    additional[j].classList.add('yes-add')
                    additional[j].append(div_main)
                }
            }
        }
    }
}


Я кликаю и выделяю блок, добавляя элементу класс click. Затем при нажатии на другую кнопку, вызываю уже даную ф-цию. И проверяю на сопадение. Работает, если выделен какой нибудь один блок. Если несколько, то вставляется только последний. Подскажите в чём ошибка?

MallSerg 25.01.2024 17:38

Похоже спамеры добрались до пользования gpt 3 в своих скриптах.

voraa 25.01.2024 17:47

Еще бы знать, что такое additional и как он формируется.

Опять же смущает colItem = checkOrder.childNodes
childNodes - это все узлы, включая пустые текстовые между элементами. Например перенос строки между элементами дает текстовый узел.
Для выбора только элементов надо colItem = checkOrder.children

voraa 25.01.2024 17:55

До меня дошло. Вы вставляете куда то созданный div_main. Потом снова вставляете его в другое место. Он благополучно туда переносится из первого места. Элемент то один. Его нельзя вставить в много мест.
Надо делать его копию

additional[j].append(div_main.cloneNode(true))


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