Как взаимодействовать с элементами из NodeList, перебирая их один за другим, не одновременно - PullRequest
0 голосов
/ 17 октября 2018

У меня есть форма с адресными строками.У каждой строки есть ссылка (.address-row aa-link-normal), при нажатии на которую появляется всплывающее окно.Во всплывающем окне есть кнопка # delete-address-popover-button-announce, по которой нужно нажать эту кнопку, что открывает еще одно диалоговое окно подтверждения с кнопкой. Rm-address-button, при этом также нажимается и удаляется одна строка адреса.

Я хочу сделать это автоматически с помощью JavaScript.Я попробовал все виды вариантов кода, используя getElementsByClassName для живого HTMLcollection, используя querySelectorAll для статического NodeList.Пробовал перегрузить NodeList, преобразовать его в Array с помощью .slice, поместить весь код в функцию с setInterval ... каждый вариант, который я пробовал, не имеет никакого эффекта, или код только удаляет первый адрес и не влияет на остальные.

Вот последний вариант кода, я также оставляю комментарии от предыдущих испытаний:

//function delayX() {
var addressBook = document.getElementById('address-list');
var adresRow = addressBook.querySelectorAll('.address-row a.a-link-normal');
console.log('Before for loop' + adresRow.length);
var i;
for (i = 0; i < adresRow.length; ++i) {
//Array.prototype.slice.call(adresRow).forEach(function (element) {
//element.click();
adresRow.item(i).click();
console.log('Click' + adresRow);

function delAddresses() {
    document.getElementById('delete-address-popover-button-announce').innerHTML = "Deleting..";
    document.getElementById('delete-address-popover-button-announce').click();
    console.log('delete-address-popover-button-announce here');
}
setTimeout(delAddresses, 1500);

function delConfirm() {
    document.querySelector('.rm-address-button').innerHTML = "Deleting..";
    document.querySelector('.rm-address-button').click();
    console.log('rm-address-button here');
    }
  setTimeout(delConfirm, 2500);
  }
 //});
 console.log('End for loop' + adresRow.length);
 //}
 //setInterval(delayX, 5000);

Странно то, что FOR повторяется столько раз, сколько элементов в NodeList, который я вижу в консоли браузера по количеству console.log.Похоже, цикл for повторяется столько раз, сколько мы хотим, однако удаляется только первый адрес, а затем код останавливается.Я также должен отметить, что после удаления строки адреса страница получает AJAX-подобное обновление.

Я работаю над этим со вчерашнего дня и чувствую себя довольно застрявшим в этой точке.Помощь и советы будут высоко оценены!

...