使用javascript单击图像
因此,我正在尝试为一个站点编写一个脚本,在这个站点中,每次单击图像时图像都会发生变化。我的目标是点击直到得到最终的图像。问题是脚本没有点击任何东西,如果我试图在控制台上打印我要点击的对象是什么,它会显示[object HTMLImageElement]。我使用的代码是:使用javascript单击图像,javascript,html,Javascript,Html,因此,我正在尝试为一个站点编写一个脚本,在这个站点中,每次单击图像时图像都会发生变化。我的目标是点击直到得到最终的图像。问题是脚本没有点击任何东西,如果我试图在控制台上打印我要点击的对象是什么,它会显示[object HTMLImageElement]。我使用的代码是: var图像; document.addEventListener(“DOMContentLoaded”,function()){ 睡眠(1); 点击器(); }); 函数点击器() { var计数器=0; console.lo
var图像;
document.addEventListener(“DOMContentLoaded”,function()){
睡眠(1);
点击器();
});
函数点击器()
{
var计数器=0;
console.log(“当前图像:+document.querySelector(.image”))
while(document.querySelector(“.image”).src!“https://site/image/4.gif“&&计数器<10)
{
log(“开始时的图像:+document.querySelector(.image”);
document.querySelector(“.image”)。单击();
计数器++;
console.log(“单击”+计数器);
log(“末尾的图像:+document.querySelector(.image”);
睡眠(1);
}
};
/*随机函数(最小值、最大值)
{
返回min+(max-min)*Math.random();
};*/
功能睡眠(s)
{
var now=new Date().getTime();
while(newdate().getTime() }
一种方法是为检查URL的load
事件使用事件侦听器
var image=document.querySelector(“.image”);
var计数器=0;
函数clickOnImage(){
如果(image.src!“https://site/image/4.gif“&&计数器<10){
image.click();
计数器++;
}否则{
image.removeEventListener(“加载”,单击图像)
}
}
addEventListener(“DOMContentLoaded”,function()){
image.addEventListener(“加载”,单击图像);
});代码>查询选择器返回一个列表。请尝试querySelector[0]
@PLZHELP您想到的querySelector所有JavaScript都是单线程的。您的sleep()
函数是一个繁忙的等待,它永远不会返回主事件循环,因此click的事件侦听器永远不会运行。您需要使用setTimeout()
或setInterval()
定期运行某些内容。@Barmar补充说,正确实现的睡眠可能是这样的:首先,谢谢你的回答。我尝试了这两种方法,但我得到了另一个错误:“Uncaught TypeError:无法在clickOnImage处读取null的属性'src'。好的,我最终通过在clickOnImage函数中添加image赋值并使用您的setInterval解决方案解决了这个问题,我将它添加到DOMContentLoaded
函数中。