【问题标题】:javascript setTimeout fuction,is something wrong with itjavascript setTimeout函数,有问题吗
【发布时间】:2019-11-22 04:57:39
【问题描述】:

我使用 settimeout 功能,为什么它不起作用。我只想每 2 秒更改一次图像。但什么也没发生,它只显示第一张图片,但没有改变。

<script type="text/javascript">

        function parta(){
            document.getElementById("carimg").src="c1.img";
            window.setTimeout(partb,2000);
        }
        function partb(){
            document.getElementById("carimg").src="c2.jpg";
            window.setTimeout(partc,2000);
        }
        function partc(){
            document.getElementById("carimg").src="c3.jpg";
            window.setTimeout(parta,2000);
        }


</script>

【问题讨论】:

  • 你的while是什么原因?
  • 您定义了 3 个函数,但从不调用它们。它也可能不应该在一个while循环中
  • 即使我删除了这个while循环它也不起作用,我将它应用到无限循环
  • 谢谢大家,我得到了答案,JLRishe谢谢

标签: javascript html loops settimeout


【解决方案1】:

你一遍又一遍地声明三个函数,却从未调用它们中的任何一个。

如果您想在三个图像之间切换,请将它们放在一个数组中,然后使用 setInterval 一次遍历一个元素:

var images = ['c1.img', 'c2.jpg', 'c3.jpg'];
var imgNum = 0;

function rotateImage() {
    document.getElementById("carimg").src= images[imgNum];
    imgNum = (imgNum + 1) % images.length;
}

rotateImage();
setInterval(rotateImage, 2000);

【讨论】:

    【解决方案2】:

    如果你想让你的代码接近你现在拥有的,你只需要改变一些事情:

    function parta() {
      document.getElementById("carimg").src="c1.img";
      window.setTimeout(partb,2000);
    }
    function partb() {
      document.getElementById("carimg").src="c2.jpg";
      window.setTimeout(partc,2000);
    }
    function partc() {
      document.getElementById("carimg").src="c3.jpg";
      window.setTimeout(parta,2000);
    }
    
    parta();
    

    在这种情况下不需要使用while,因为每个函数将在 2 秒后相互调用。但是,您仍然需要启动该“循环”,这就是您需要调用parta() 的原因。此外,在这种情况下使用setInterval 可能更有意义。

    您可以在 CodePen 上使用此代码 sn-p:https://codepen.io/yvesgurcan/pen/RwwOawO

    【讨论】:

      【解决方案3】:

      试试这个

      let imageSrc = ['c1.img', 'c2.jpg', 'c3.jpg'];
      let imgIndex;
      setInterval(()=>{
          if(imgIndex == undefined) {
              imgIndex = 0;
          } else {
              if(imgIndex >= imageSrc.length - 1) {
                  imgIndex = 0;
              } else {
                  imgIndex++;
              }
          }
          document.getElementById("carimg").src = imageSrc[imgIndex];
      }, 2000);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-31
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        相关资源
        最近更新 更多