在我之前的问题中,我有一些延迟问题。上一个问题: delay with settimeout and for loop
我的目的是从网站上获取一些数据,然后在IE中使用控制台。 当用户单击标记名称为“ something”的元素时,内容将更改。
如果我只想通过以下方式单击元素,则此代码可以完美运行:
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
在这种情况下,内部设置时间和外部设置时间分别计算,而不像其他语言中那样众所周知的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()....
网址不变,只有内容。