gpt4 book ai didi

JavaScript .click()在for循环中只执行一次

转载 作者:行者123 更新时间:2023-11-28 07:34:00 26 4
gpt4 key购买 nike

我正在尝试模拟网站中各种链接的点击,并使用它们来展开部分。开发人员没有费心添加“全部展开”,而且至少有 200 个我不想点击的按钮,所以我想我会使用 JavaScript。不过,欢迎任何其他想法。

我尝试模拟点击的链接定义为:

<a id='a_link_1' href=...> ... </a>
<a id='a_link_2' href=...> ... </a>
<a id='a_link_3' href=...> ... </a>

我认为在 Google Chrome 的开发者控制台上使用类似的东西会起作用:

var level_one = [
'a_link_1',
'a_link_2',
'a_link_3'
];

for (var i = 0; i < level_one.length; i++) {
document.getElementById(level_one[i]).click();
}

问题是它仅适用于第一个链接。如果我更改链接的顺序,它仍然只适用于第一个链接。我实际上尝试设置一个计时器来稍微思考一下可以解决问题,但没有。

为什么它没有激活所有链接以及正确的方法是什么?谢谢!

如果您想测试一下,网站是:http://www3.inegi.org.mx/sistemas/saic/ (西类牙语)。

<小时/>

编辑:@chiliNUT 的答案对我来说最有用,所以我将其放在这里,因为我无法将其标记为已接受的答案,因为它没有作为答案提交。

总结一下,

clickables = document.querySelectorAll('a[href^="javascript:"]'); 
for (i in clickables) { clickables[i].click(); }

将检索所有具有以“javascript”开头的链接的对象(用于触发扩展链接)。 for 循环 实际上模拟了对它们的点击,一一点击(小心!您最终可能会模拟点击您不想要的东西)。

就是这样。感谢@chiliNUT 提供了该解决方案。

最佳答案

使用 jQuery:

        $(level_one.map(function(e){return '#'+e}).join(',')).each(function(e,index){
setTimeout(function(){$(e).trigger('click')},index*1000)
});

  • a#a_link_1 将立即触发(0 超时)
  • a#a_link_2 将在 1 秒后触发(1000 毫秒超时)
  • a#a_link_3 将在 2 秒后触发(2000 毫秒超时)

......

  • a##a_link_n 将在 (n-1) 秒后触发
<小时/>

注意

  • level_one.map(function(e){return '#'+e}).join(',') 相当于:'#a_link_1,#a_link_2,#a_link_3'

关于JavaScript .click()在for循环中只执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com