javascript - 自动更改图像特定时间段
问题描述
我想在每个特定时间段更改数组中的图像。但是我的代码不起作用,请帮助。
<body>
<div id="one">one</div>
<img src="" id="photo2">
<script>
var one = document.getElementById("one");
var photo2 = document.getElementById("photo2");
var links = ["03.gif","04.gif","05.gif","06.gif","07.gif"];
one.onclick = function(){
_SlidePic(0);
};
function _SlidePic(i){
if (i < links.length){
photo2.src = links[i];
i++;
id = setInterval(_SlidePic(i),1000);
}
}
</script>
</body>
解决方案
setInterval()
接受将要执行的函数。您必须在内部定义一个函数setInterval
而不是调用它。
您可以通过两种方式修复它,而无需更改代码结构。
- 您可以使用
bind
属性使 i 在_SlidePic
函数内部可访问。
var one = document.getElementById("one");
var photo2 = document.getElementById("photo2");
var links = ["03.gif","04.gif","05.gif","06.gif","07.gif"];
one.onclick = function(){
_SlidePic(0);
};
function _SlidePic(i){
if (i < links.length){
photo2.src = links[i];
i++;
id = setInterval(_SlidePic.bind(this, i), 1000);
}
}
<body>
<div id="one">one</div>
<img src="" id="photo2">
</body>
- 您可以在内部定义函数
setInterval
并在该函数内部调用SlidePic
,如下所示...
var one = document.getElementById("one");
var photo2 = document.getElementById("photo2");
var links = ["03.gif","04.gif","05.gif","06.gif","07.gif"];
one.onclick = function(){
_SlidePic(0);
};
function _SlidePic(i){
if (i < links.length){
photo2.src = links[i];
i++;
id = setInterval(function(){
_SlidePic(i)
}, 1000);
}
}
<body>
<div id="one">one</div>
<img src="" id="photo2">
</body>
推荐阅读
- spring - 当我们有 ingress 和 kuberneters 环境时,我们在哪里将 x-frame-options 标头添加到 apis ?
- c# - Сan't 为 serilog 配置自定义接收器
- tensorflow - 如何为特定数量的 epoch 缓存 TensorFlow 数据集,然后重新生成数据集?
- google-bigquery - ST_MAKEPOLYGON 反函数
- c - STM32F103 HAL_CAN_RxFifo0MsgPendingCallback 无法工作
- ios - 如何在 iOS 项目中减小 openCV 框架大小
- ionic4 - 如何使用离子网格创建砌体布局?
- mysql - 为什么在我运行 npm run dev 代码时会更改我的 mix-manifest 文件?
- python - Databricks 笔记本命令仅在计划为作业时跳过
- jquery - 如何在 jQuery( 文档 ).ready 中显示用户名?