Проблема с удалением div

125
27 апреля 2018, 13:36

Есть разметка, я ее добавляю в js, с помощью insertAdjacentHTML

    <a class="button_green" href="${array_for_href[i]}" target="_blank">
        <span class="action_button_left"></span>
        <span class="action_button_contents">${name_market[i]}</span>
        <span class="action_button_right"></span>
        <span class="action_button_preload"></span>
    </a>

Когда выбирается другой предмет, то кнопка от прошлого предмета удаляется и кнопка нового добавляется.

function delete_for_button_green(){
    var elem = document.getElementsByClassName("button_green");
    if (elem.length > 0) {
        for(var i = 0; i < elem.length; i++){
            elem[i].remove();
        }
    }
}

Мой div с классом button_green после после например 10 раз просмотра предметов остается в DOM. Так как тут моему div с классом button_green присваивается пустая строка, а сам div остается. Когда я меняю строчку elem[i].innerHTML = ''; на elem[i].remove(); то скрип когда выбираешь любой третий предмет, остаются две кнопки. Почему это происходит и как можно избежать? Или совет как удалить мой div с классом button_greenполностью?

Answer 1

getElementsByClassName возвращает "обновляющуюся" коллекцию:

https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName

    for(var i = elem.length - 1; i >= 0; i--){
        elem[i].remove();
    }
READ ALSO
Ошибка window.Market.Liner is not a constructor

Ошибка window.Market.Liner is not a constructor

Есть проблемка, при вызове выдает ошибку

165
Удаление последнего элемента списка JS

Удаление последнего элемента списка JS

Как сделать так, чтоб удалять последний введенный элемент списка, а не все?

140
Webpack билд подмодуля при изменении файлов

Webpack билд подмодуля при изменении файлов

Есть проект, в нем подмодуль (git)У проекта и подмодуля свои pachakge

148
AngularJS обращение к директиве ng-repeat

AngularJS обращение к директиве ng-repeat

Пользуясь AngularJS и вывожу элементы массива в список вот таким образом:

142