проблема множественного добавления

202
20 апреля 2018, 15:24

Отслеживаю элементы iteminfo0_item_name и iteminfo1_item_name

(function() {
    console.log(1);
    document.getElementById("iteminfo0_item_name").addEventListener(
        "DOMSubtreeModified",
        function() {
            console.log("0");
            inventory_logos0();
        }
    );
    document.getElementById("iteminfo1_item_name").addEventListener(
        "DOMSubtreeModified",
        function() {
            console.log("2");
            inventory_logos1();
        }
    );
})();

Потом функциями inventory_logos1 и inventory_logos0 добавляю span (функция inventory_logos1 идентична inventory_logos0)

function inventory_logos0(){
    var d0 = document.getElementById('iteminfo0_item_tags');
    d0.insertAdjacentHTML('beforeend', `
<span class="item_market_action_button_contents">Слова</span>
`);
    console.log(3);
}

Проблема в том что он к моим iteminfo0_item_tags и iteminfo1_item_tags добавляется сперва два span, затем после очередного изменения iteminfo0_item_name или iteminfo1_item_name к уже существующим двум span добавляются еще два span. Вопрос, как сделать чтобы страница загрузилась, произошли изменения в iteminfo0_item_name или iteminfo1_item_name, предыдущие два span удалились, а добавились новые два?

Answer 1

Т.к. вы вызываете вечную рекурсию, предлагаю вам сделать Event listener одноразовым

  1. анонимной функции дописать имя и в ней сделать

    вашЭлемент.removeEventListener(тип, имяВашейФункции) 
    

Или

  1. принять в функции событие(Event) и сделать

    вашЭлемент.removeEventListener(event.type, arguments.callee) 
    
READ ALSO
Javascript не записывает данные формы в localstorage

Javascript не записывает данные формы в localstorage

Пытаюсь записать данные формы из Contact form7 через js в localstorage Но они не записываются записывается лишь одно значение как key=1904

206
Булевые знаечния и логически операции

Булевые знаечния и логически операции

Объясните пожалуйста как это работате?

207
Как убрать &ldquo;Г.&rdquo; в JavsScript

Как убрать “Г.” в JavsScript

Здравствуйте, у меня возникла некая проблемка, нужно убрать "Г" при выводе даты в js

187
ждать, пока придёт ответ js

ждать, пока придёт ответ js

при клике вызывается функция, которая возвращает jsonесли кликов будет много, то сервер будет нагружаться

183