Javascript 单击html元素';setTimeout()之后无法工作
我有一个用户脚本,可以在页面上加载按钮列表。然后,它尝试在循环中逐个单击所有按钮。这是我的职责Javascript 单击html元素';setTimeout()之后无法工作,javascript,userscripts,Javascript,Userscripts,我有一个用户脚本,可以在页面上加载按钮列表。然后,它尝试在循环中逐个单击所有按钮。这是我的职责 const clickButtons = async function(listButtons) { const filteredButtons = Array.from(listButtons).filter(x => shouldButtonBeClicked(x.innerText)); for (let i = 0; i < filteredButtons.leng
const clickButtons = async function(listButtons) {
const filteredButtons = Array.from(listButtons).filter(x => shouldButtonBeClicked(x.innerText));
for (let i = 0; i < filteredButtons.length; i++) {
filteredButtons[i].click();
}
}
const clickButtons=异步函数(listButtons){
const filteredButtons=Array.from(listButtons).filter(x=>shouldButtonBeClicked(x.innerText));
for(设i=0;i
上述代码按预期工作。没有问题。单击所有按钮
但是,当我尝试在每次单击之前添加一些等待时间时,它不起作用。没有一个按钮被点击。注意循环中第一行的wait()
const wait = async function(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
const clickButtons = async function(listButtons) {
const filteredButtons = Array.from(listButtons).filter(x => shouldButtonBeClicked(x.innerText));
for (let i = 0; i < filteredButtons.length; i++) {
await wait(1000);
filteredButtons[i].click();
}
}
const wait=async函数(时间){
返回新承诺(resolve=>setTimeout(resolve,time));
}
常量clickButtons=异步函数(listButtons){
const filteredButtons=Array.from(listButtons).filter(x=>shouldButtonBeClicked(x.innerText));
for(设i=0;i
我在这里遗漏了什么?通过单击来解决承诺应该是可行的
await wait(1000).then((res)=> filteredButtons[i].click());
您可以尝试以下方法:
const wait=async函数(时间){
返回新承诺(resolve=>setTimeout(resolve,time));
}
常量clickButtons=异步函数(listButtons){
const filteredButtons=Array.from(listButtons).filter(x=>shouldButtonBeClicked(x.innerText));
forEach(异步函数(filteredButton,索引){
等待等待(1000);
filteredButtons[索引]。单击();
//或
//filteredButton.click();
});
}
。也许按钮在同一时间变了?@Ivar,我有这个疑问。但是我已经验证了元素在timeout@Ivar看来按钮毕竟是从以前的操作中改变过来的。我等待了一秒钟,然后取回要单击的按钮,这样之前的任何操作都不会影响它。成功了。谢谢