首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每隔几秒钟更改一次镜像的src

每隔几秒钟更改一次镜像的src
EN

Stack Overflow用户
提问于 2020-01-11 13:09:44
回答 3查看 180关注 0票数 2

我试图显示相同的图像,这是一个gif(动画)和jpeg。我每隔几秒钟就会更换一次src

我在dev工具中看到src已经改变,但是gif没有动画效果。

代码语言:javascript
复制
setInterval(function(){

 if(c == 1){

     imgExt = 'assets/images/resize.gif'
     ++c;
 }
 else{
    imgExt = 'assets/images/resize.jpg';
     --c;
 }
//  document.querySelector('#floorImgId').src = imgExt;
 $('#floorImgId').attr('src', imgExt);
}, 3000)`

当我检查元素时,它正在改变,但在页面中,gif不播放。我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2020-01-11 13:28:11

您需要首先设置c = 1,这样++c才能正常工作:

(有些程序员喜欢在01之间切换,而您的原始代码则在12之间切换。两者都起作用,这取决于你。)

01之间切换

(我也可能使用prop()而不是attr(),但为了使其与原始版本保持一致:)

代码语言:javascript
复制
let c = 0;

setInterval(function() {
  if (c === 0) {
    imgExt = 'https://i.imgur.com/GCPeHoX.png';
    ++c;
  } else {
    imgExt = 'https://i.imgur.com/J2wgZZb.png';
    --c;
  }
  //  document.querySelector('#floorImgId').src = imgExt;
  $('#floorImgId').attr('src', imgExt);
}, 1000);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img id="floorImgId">

如果只是切换,我倾向于使用:

代码语言:javascript
复制
let toggle = true;
setInterval(function() {

  if (toggle) {
    imgExt = 'https://i.imgur.com/GCPeHoX.png';
  } else {
    imgExt = 'https://i.imgur.com/J2wgZZb.png';
  }
  toggle = !toggle;

  //  document.querySelector('#floorImgId').src = imgExt;
  $('#floorImgId').attr('src', imgExt);
}, 1000);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img id="floorImgId">

为了隐藏toggle,这样它就不会污染外部作用域,只需将整个东西包装在一个生命中,或者您也可以使用:

代码语言:javascript
复制
setInterval((function() {
  let toggle = true;

  return function() {
    if (toggle) {
      imgExt = 'https://i.imgur.com/GCPeHoX.png';
    } else {
      imgExt = 'https://i.imgur.com/J2wgZZb.png';
    }
    toggle = !toggle;

    //  document.querySelector('#floorImgId').src = imgExt;
    $('#floorImgId').attr('src', imgExt);
  };

}()), 1000);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img id="floorImgId">

票数 1
EN

Stack Overflow用户

发布于 2020-01-11 13:30:38

从你的代码中,我认为你必须在else语句中增加c,在if语句中减少c:

代码语言:javascript
复制
c=0;
setInterval(function(){

 if(c == 1){

     imgExt = 'assets/images/resize.gif'
     --c;
 }
 else{
    imgExt = 'assets/images/resize.jpg';
     ++c;
 }
//  document.querySelector('#floorImgId').src = imgExt;
 $('#floorImgId').attr('src', imgExt);
}, 3000)
票数 0
EN

Stack Overflow用户

发布于 2020-01-11 13:35:16

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>

<img id="floorImgId" src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Hamiltonian_path.svg/440px-Hamiltonian_path.svg.png" />

<script>
var c = 1,imgExt = "";
setInterval(function(){

 if(c == 1){

     imgExt = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Hamiltonian_path.svg/440px-Hamiltonian_path.svg.png'
     ++c;
 }
 else{
    imgExt = 'https://buffer.com/library/wp-content/uploads/2016/06/giphy.gif';
     --c;
 }
 $('#floorImgId').attr('src', imgExt);
}, 3000);

</script>
</body>

</html>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59691837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档