我有一个带有地址行的表格。每行都有一个链接(.address-row a.a-link-normal),单击该链接时会显示一个链接。弹出窗口中有一个按钮#delete-address-popover-button-announce需要单击此按钮,这将打开另一个带有按钮.rm-address-button的确认对话框,该对话框也将被单击,并且删除一个地址行。
我想使用JavaScript自动执行此操作。我尝试使用getElementsByClassName进行实时HTML收集,使用querySelectorAll进行静态NodeList进行各种代码变化。尝试重载NodeList,将其用.slice转换为Array,将整个代码放入带有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的刷新。
从昨天开始,我一直在从事此工作,但此时此刻,我感到很困惑。帮助和建议将不胜感激!