使用javascript计时将Gif链接到Div
我正在尝试根据gif更改div的背景色。这是我的代码:使用javascript计时将Gif链接到Div,javascript,html,Javascript,Html,我正在尝试根据gif更改div的背景色。这是我的代码: <!DOCTYPE html> <html lang="en"> <head> <title>Dashboard</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-
<!DOCTYPE html>
<html lang="en">
<head>
<title>Dashboard</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--===============================================================================================-->
<link rel="icon" type="image/png" href="images/icons/favicon.ico" />
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="fonts/iconic/css/material-design-iconic-font.min.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="vendor/animate/animate.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="vendor/css-hamburgers/hamburgers.min.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="vendor/animsition/css/animsition.min.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="vendor/daterangepicker/daterangepicker.css">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="css/util.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
<!--===============================================================================================-->
</head>
<body onload="resetGif('img3')">
<div class="container m-t-20 m-l-20px">
<div class="row">
<div class="col-9">
<h2>Map of KidKits</h2>
<img src="images/map crossfade.gif" alt="" class="map-gif" id="img3">
</div>
<div class="col-3">
<h2 id="first-bad">Div to change color</h2>
</div>
</div>
</div>
<script>
(function(el, interval) {
window.setInterval(function() {
document.getElementById("first-bad").style.backgroundColor = "#2eaa2e"
}, interval);
setTimeout(function() {
document.getElementById("first-bad").style.backgroundColor = "orange"
}, 3410);
setTimeout(function() {
document.getElementById("first-bad").style.backgroundColor = "#2eaa2e"
}, 1500);
})(document.getElementById('first-bad'), 10410);
function resetGif(id) {
var img = document.getElementById(id);
var imageUrl = img.src;
img.src = "";
img.src = imageUrl;
};
</script>
</body>
</html>
仪表板
儿童用品地图
Div更改颜色
(功能(el,间隔){
setInterval(函数(){
document.getElementById(“第一个坏”).style.backgroundColor=“#2eaa2e”
},间隔);
setTimeout(函数(){
document.getElementById(“第一个坏”).style.backgroundColor=“橙色”
}, 3410);
setTimeout(函数(){
document.getElementById(“第一个坏”).style.backgroundColor=“#2eaa2e”
}, 1500);
})(文件getElementById('first-bad'),10410);
函数resetGif(id){
var img=document.getElementById(id);
var imageUrl=img.src;
img.src=“”;
img.src=imageUrl;
};
这里发生的事情是,每次加载页面时,我都会重置gif,以便时间匹配。当gif左边的点退出框时,我想将div的背景色从绿色更改为橙色,当点返回框时,我想将div的背景色从橙色更改为绿色。这必须在gif的持续时间内无限循环,以便在一次迭代后颜色不会错过匹配。我该怎么做
我现在面临的问题是:
- 加载时,磁贴没有bg颜色
- 时间不定了
- 一旦瓷砖在一次迭代中从绿色变为橙色再变为绿色,它就不会重复
css/main.css
文件中设置它
时间不定了
嗯,setTimeout
不准确。有关更多信息,请查看此答案:
一旦瓷砖在一次迭代中从绿色变为橙色再变为绿色,它就不会重复
这可能是因为您使用了将执行代码一次的
setTimeout
。更改代码就像重置计数器一样,并将bgcolor放入数组中
你有什么切实可行的方法来证明你的建议吗?@UdoE。
let counter = 0;
const bgColorArray = ['red', 'orange', 'yellow'];
setInterval(() => {
let increaseCounter = ++counter;
if (increaseCounter === bgColorArray.length) {
counter = 0;
}
document.getElementById("first-bad").style.backgroundColor =
bgColorArray[increaseCounter]
}, 1000)