Javascript 具有动画间隔的图像

Javascript 具有动画间隔的图像,javascript,jquery,html,Javascript,Jquery,Html,我将使用if-else为每个图像创建一个具有一定间隔的动画,但它不起作用,它让我感到困惑,请任何人告诉我我的代码有什么问题。这是我的密码: var j=setInterval(james,5); 函数james(){ var pos=1; 如果(位置>=6){ 净间隔(j); document.getElementsByTagName('img')[0].setAttribute('src','https://www.ptcrush.com/“+pos+.gif”); }否则{ var pos

我将使用if-else为每个图像创建一个具有一定间隔的动画,但它不起作用,它让我感到困惑,请任何人告诉我我的代码有什么问题。这是我的密码:

var j=setInterval(james,5);
函数james(){
var pos=1;
如果(位置>=6){
净间隔(j);
document.getElementsByTagName('img')[0].setAttribute('src','https://www.ptcrush.com/“+pos+.gif”);
}否则{
var pos+=1;
document.getElementsByTagName('img')[0].setAttribute('src','https://www.ptcrush.com/“+pos+.gif”);
}
}


光环
从行中删除
var

var pos += 1;
同时将变量初始化移到函数外部:

var pos = 1;
function james() {
    ...

您需要将变量
pos
置于函数外部,并且需要增加超时时间,因为在加载新图像时,计时器将加载新图像

var pos=1;
var j=设定间隔(james,4000);
函数james(){
如果(位置>=6){
净间隔(j);
文件
.getElementsByTagName('img')[0]
.setAttribute('src','https://www.ptcrush.com/“+pos+.gif”);
}否则{
pos+=1;
文件
.getElementsByTagName('img')[0]
.setAttribute('src','https://www.ptcrush.com/“+pos+.gif”);
}
控制台日志('pos',pos);
}

这是一个工作示例中的代码

以下是我改进的几点建议:

  • pos
    移出函数,因为每次调用该函数时,它都将重置为1
  • 无需清除间隔,除非希望在一轮后停止动画
  • 删除else语句中的var。由于您已经在上面定义了它,因此无需再次进行定义。仅在第一次启动变量时使用
    var
    let
    const
  • 我已将间隔增加到3秒
    setInterval(james,3000)
    否则动画将运行得太快。调整你认为合适
  • var j=setInterval(詹姆斯,3000);
    var pos=1;
    函数james(){
    如果(位置>=6){
    pos=1;
    document.getElementsByTagName('img')[0].setAttribute('src','https://www.ptcrush.com/“+pos+.gif”);
    }否则{
    pos+=1;
    document.getElementsByTagName('img')[0].setAttribute('src','https://www.ptcrush.com/“+pos+.gif”);
    }
    }
    
    
    您好

    您应该将
    pos
    的初始化移到功能之外。每次调用函数时都将其重置为
    1
    ,因此它永远不会
    =6