Javascript:如何在函数中毫不延迟地执行函数?
我正在尝试使用javascript制作一个自动图像库,将img语句(+css的一些附加内容)粘贴到html中。 所有图像都位于同一文件夹中,并命名为图像(1)、图像(2)。。。显然,客户端不知道文件夹中文件的名称,也不知道文件的数量。 附加过程工作得很好,但我无法找到一种方法来停止不给自己的图片数量。Javascript:如何在函数中毫不延迟地执行函数?,javascript,function,nested,Javascript,Function,Nested,我正在尝试使用javascript制作一个自动图像库,将img语句(+css的一些附加内容)粘贴到html中。 所有图像都位于同一文件夹中,并命名为图像(1)、图像(2)。。。显然,客户端不知道文件夹中文件的名称,也不知道文件的数量。 附加过程工作得很好,但我无法找到一种方法来停止不给自己的图片数量。 当浏览器找不到下一个图像时,我尝试使用“.onerror”停止追加过程,但它总是被跳过直到结束(导致无限循环(我使用的是"i之所以跳过一些,是因为加载每个图像和调用onerror都需要时间,但是您
当浏览器找不到下一个图像时,我尝试使用“.onerror”停止追加过程,但它总是被跳过直到结束(导致无限循环(我使用的是"i之所以跳过一些,是因为加载每个图像和调用onerror都需要时间,但是您在一个循环中执行所有代码,而不等待错误,因此即使出现错误,在当前循环周期之后触发错误事件之前,标志变量也不会更改 这样做的方法是,如果某个条件尚未满足,则使用递归。此外,我建议使用Image进行测试,然后将其附加到文档中 此外,您甚至不需要错误,您只需在成功加载时附加它即可 所以你可以像这样使用递归
var cur = 0
function getImg() {
var img= new Image ()
img.src = "image (" + (cur++) + ").jpg"
img.onload = () => {
fotos.appendChild(img)//or other span elements etc that have img as a child
getImg()
}
//if you want to know when it ended then you can use .onerror
img.onerror = () => console.log("done")
}
getImg()
快速而肮脏的解决方案。向文件发出HEAD ajax请求。如果它返回成功响应代码,则它存在、追加、递增、重复。如果它返回404或其他错误响应代码,则它不存在,则停止处理。使用HEAD请求与GET请求的原因是,HEAD请求不会返回图像数据。由于您只是试图确定文件是否存在,因此不需要数据。请参阅。似乎可以回答您的问题。@Taplar我们很有兴趣看到该解决方案。很抱歉,响应太晚。我尝试了上述所有方法,但仅对图像本身有效,我似乎无法获得我真正需要的链接和范围能够点击图片,看到它更大,…有没有办法我可以附加整个字符串?
var cur = 0
function getImg() {
var img= new Image ()
img.src = "image (" + (cur++) + ").jpg"
img.onload = () => {
fotos.appendChild(img)//or other span elements etc that have img as a child
getImg()
}
//if you want to know when it ended then you can use .onerror
img.onerror = () => console.log("done")
}
getImg()