javascript - 使用 settimeout 和 for 循环延迟 + 1 次延迟
问题描述
在我之前提出的问题中,我在延迟方面遇到了一些问题。上一个问题: settimeout 和 for 循环的延迟
我的目的是从网站获取一些数据,并在 IE 中使用控制台。当用户单击具有标记名“某物”的元素时,内容会更改
如果我只想通过以下方式单击元素,则此代码运行完美:
for (var x = 1; x < 5; x++) {
(function(i) {
setTimeout(function() {
document.getElementsByTagName("something")[i].click(); }, i * 1000)
}(x))
}
但在我的情况下,我还需要在点击后从网站获取内容,所以我在点击后添加了一个新行:
myarray=[];
for (var x = 1; x < 5; x++) {
(function(i) {
setTimeout(function() {
document.getElementsByTagName("something")[i].click();
var x=theelement.innerHTML;
myarray.push(x);
}, i * 1000)
}(x))
}
因此,使用数组我可以在单击后获取内容。问题是,在单击站点加载约 1-2 秒后,我上面的代码尝试立即获取元素并将其 innerHTML 值分配给 x 变量。
我试图在延迟内进行“嵌套延迟”但不起作用,因为它们是单独评估的。所以我试着像这样解决这个问题:
outer settime with delay 1000ms
element.click()
inner settime with delay 3000ms
x=element.innerhtml
innersettime close tag
outer settime close tag
在这种情况下,内部 settime 和外部 settime 是分开评估的,不像其他语言中众所周知的 sleep() 函数。目的是在“单击”和“获取元素的内容”功能之间进行延迟。而这 2 个功能必须重复 30 次。而这30次之间也必须是延迟。
link1.click();
3sec pause; -->this is the pause between "click" and "get content"
x=elem1.innerHTML;
myarray.push(x);
1sec pause;
link2.click();
3secpause; --> this is the pause between each loop (there is 30link on the site)
x=elem2.innerHTML;
myarray.push(x);
until link30.click()....
网址不变,只有内容。
解决方案
推荐阅读
- excel - Excel - 在 Win 10 中将多个离散项目复制到剪贴板
- python - 如何删除嵌套在列表中的元组?
- math - 贝塞尔曲线或 b 样条的通用数据结构是什么?
- python - 计算子列表中的出现次数
- json - 在flutter中通过代码删除本地JSON文件
- html - 菜单栏不显示
- java - java中如何使用没有对象的类名来访问其内容?
- docker - 带有 Docker 和 shell 错误的 Gitlab Runner — 权限被拒绝
- spring-boot - Java JPA:如何使用多个 DB 用户?
- python - Keyerror Python Dict 从错误交易应用程序中引发 KeyError(key)