我正在写一个书签来收集我买的Indiegala捆绑包中的信息.我没有赠送整个捆绑,而是一次赠送连体衣和两件衣服,因此拥有个性化的礼品网更容易.
在他们拥有之前所以钥匙在那里我可以用一个简单的选择器收集它,现在他们有一个小图像你必须点击以获得每个蒸汽/ desura游戏的礼物网址.
我想,在一个循环中,点击所有这些礼物图像,以获得礼物网址出现,然后循环并获得这些礼物网址.我写了这个:
var gifts = $('#icon-gift img');
for(var j=0; j < gifts.length-1; j++){
gifts[j].click();
}
Run Code Online (Sandbox Code Playgroud)
循环浏览所有图像并触发点击,以便显示礼品网址.我知道它会遍历每个图像,因为它会记录到控制台,因此我知道它不会卡住,但出于某种原因它只能点击第一个可用的图像.单击图像后(谢天谢地)它会被永久点击,当我刷新它时它只有礼品网址然后如果我再次运行循环它会执行下一个(但是这会破坏在脚本中执行它的目的).
我试过添加一个delay(500)甚至delay(1500)附加到click()但但似乎没有改变任何东西.
我的问题是:有谁知道为什么会发生这种情况,是否有任何关于如何解决或解决这个问题的建议?
我认为它与异步性有关.这就像循环的其余部分除了其他点击事件之外还会执行其他所有操作.我试过了:var gifts = $('#icon-gift img');
$.each(gifts, function(i, val){
setTimeout(function(){
val.click();
val.remove();
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
并且它仍然只执行第一个并删除所有其他图像.如果我手动完成gifts[0].remove();那么gifts[0].click();它会完成下一个.这正是我认为.each()或for loop将要做的事情,但似乎它无法执行下一次点击,前一个点击仍在执行或仍然存在.