JavaScript循环从00000到000256

时间:2014-01-09 11:42:40

标签: javascript loops for-loop

我的文件名为animation_00000.pnganimation_00256.png。我以为我可以简单地循环并将它们加载到屏幕上,

var animation = $("<img id='animtation' />");
animation.prependTo(".stage");

for(var i = 00000; i < 00276; i++)
{
    animation.attr("src", "img/animations/cat/Catwalk_"+i+".png");
}

然而,这会尝试加载像这样的图像源

Catwalk_0.png

如何确保计数中保留所有零?

4 个答案:

答案 0 :(得分:2)

类似的东西:

var num = "00000"+ i.toString();
var str = num.substr(num.length-5,5);
animation.attr("src", "img/animations/cat/Catwalk_"+ str +".png");

答案 1 :(得分:1)

文字在转换为字符串时不会保持其词法表示。或者,实际上,在解析脚本以供执行之后。所以那些领先的零已经消失了。它们还会将您的文字解释为 octals 而不是小数,您当然不需要这些。

相反,删除前导零,并在循环体内使用字符串填充函数。没有内置的这样的功能,但写一个是相当简单的。

答案 2 :(得分:0)

填充数字没有内置函数。所以,试试这样的事情

function padding (number, maximum) 
{
  return number.length < maximum ? padding("0" + number, maximum) : number;
}

然后,将循环更改为

for(var i = 0; i < 276; i++)
{
   padded = padding(i, 5);
   animation.attr("src", "img/animations/cat/Catwalk_"+padded+".png");
}

答案 3 :(得分:0)

var iString = i.toString();

if(i < 10){
    iString = "0" + iString
}
if(i < 100){
    iString = "0" + iString
}
if(i < 1000){
    iString = "0" + iString
}
if(i < 10000){
    iString = "0" + iString
}
if(i < 100000){
    iString = "0" + iString
}

我不确定这是否有效,因为我不是JS的专家。但这就是我在大多数其他代码中解决这个问题的方法。