javascript - 如何在 HTML 上的多张图片中为一张图片添加计时器
问题描述
所以我有这个 HTML 代码只在浏览器上显示图片,每次点击都会转换到下一张图片。我的问题是如何让 Slide13 在 4 秒后自动转到 Slide14,然后返回单击以在图片之间转换?谢谢!!
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Slide1.PNG</title>
</head>
<body onclick="step()">
<img id="image_id" src="" style="width:100%;height:100%">
</body>
<script type="text/javascript">
var images=[
"Slide1.PNG",
"Slide2.PNG",
"Slide3.PNG",
"Slide4.PNG",
"Slide5.PNG",
"Slide6.PNG",
"Slide7.PNG",
"Slide8.PNG",
"Slide9.PNG",
"Slide10.PNG",
"Slide11.PNG",
"Slide12.PNG",
"Slide13.GIF",
"Slide14.PNG",
"Slide15.GIF",
"Slide16.PNG",
"Slide17.PNG",
"Slide18.PNG",
"Slide19.PNG",
"Slide20.GIF",
"Slide21.PNG",
"Slide22.PNG",
"Slide23.PNG",
"Slide24.PNG",
"Slide25.PNG",
"Slide26.PNG",
"Slide27.PNG",
"Slide28.PNG",
"Slide29.PNG",
"Slide30.PNG",
"Slide31.PNG",
"Slide32.PNG",
"Slide33.PNG",
"Slide34.PNG"
];
var index=0;
var imageObjects=images.map(function(img){var imgTag=new Image();imgTag.src=img});
function step(){
document.getElementById('image_id').src=images[(index++)%images.length];
}
step();
</script>
</html>
解决方案
将此添加到您的步骤中:
var image = document.getElementById("image_id").src;
if (image=="Slide13.GIF") {
setTimeout(function(){
document.getElementById('image_id').click();}, 4000);
}
它会在每一步检查图像的源值,当它点击 Slide13.GIF 时,它将在 4 秒后模拟点击它并转到下一个。
请参见下面的演示,在 3ed 图像上,它将在 2 秒后单击它。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Slide1.PNG</title>
</head>
<body onclick="step()">
<img id="image_id" src="" style="width:100%;height:100%">
</body>
<script type="text/javascript">
var images=[
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.zYTlTH6b_YYEeNCvZsznjgHaD5%26pid%3DApi&f=1",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.ZJA-xTrw2bHQaUXA6buoGwHaDt%26pid%3DApi&f=1",
"https://media2.giphy.com/media/YmbxC8Bkj9bZ4yu4Le/source.gif",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.qz01j4K29bmGqCy1hIwGswHaFf%26pid%3DApi&f=1",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia1.tenor.com%2Fimages%2Fea490bc9d89afaf7d2431a0374aef65c%2Ftenor.gif%3Fitemid%3D15761601&f=1&nofb=1",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.wae3QtVQ_QQvkeaQ3alxzgHaEY%26pid%3DApi&f=1",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.xd0rh27OUOrMUw8_ACG0HwHaDt%26pid%3DApi&f=1",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.adQHsWv9A37aVRLNDLLlkwHaEK%26pid%3DApi&f=1",
"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.3nRZ72gyQTUakC-ZbhQ_MQHaHa%26pid%3DApi&f=1"
];
var index=0;
var imageObjects=images.map(function(img){var imgTag=new Image();imgTag.src=img});
function step(){
document.getElementById('image_id').src=images[(index++)%images.length];
var image = document.getElementById("image_id").src;
console.log(image);
if (image=="https://media2.giphy.com/media/YmbxC8Bkj9bZ4yu4Le/source.gif" || image=="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia1.tenor.com%2Fimages%2Fea490bc9d89afaf7d2431a0374aef65c%2Ftenor.gif%3Fitemid%3D15761601&f=1&nofb=1") {
setTimeout(function(){ document.getElementById('image_id').click(); }, 3000);
}
}
step();
</script>
</html>
编辑:
它确实适用于 gif,我只是在第 3 步和第 5 步中添加了其中的两个。此外,如果您的 if 语句中需要更多条件,请将它们用 || 分隔。像这样:
if (image=="https://media2.giphy.com/media/YmbxC8Bkj9bZ4yu4Le/source.gif" ||
image=="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia1.tenor.com%2Fimages%2Fea490bc9d89afaf7d2431a0374aef65c%2Ftenor.gif%3Fitemid%3D15761601&f=1&nofb=1") {
正如现在编辑的演示中所见,它将单击两个 gif,编号 3 和 5。您可以添加console.log(image);
下面的图像变量以查看正确的图像源并在条件下使用它。
如果您在查找路径时遇到问题,可以将其用作您的条件:
if (image.indexOf("Slide13.GIF") >= 0 || image.indexOf(" other pic ") >= 0")
这将检查源值的图像变量是否包含您想要的图像标题。
推荐阅读
- android - 删除 AppBarLayout 周围的边框
- php - 从 PHP 将奇怪的字符串转换为 UTF-8 易读字符
- reactjs - Redux:在后端和前端之间共享一个正则表达式
- php - PHP中“+”、“-”和“^”运算符的区别?
- postgresql - 主索引的搜索键必须是主键或与主键相关吗?
- java - How to use public key to validate JWT Token using vertx
- json - Spring Boot 将参数化类型序列化为带有类型 id 的 JSON
- swift - Intersection over union for rectangles with different orientation
- android - Android ProgressBar size take whole screen
- java - robots.mouseMove 没有通过视频证据移动到正确的位置