我的文件名为animation_00000.png
到animation_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
如何确保计数中保留所有零?
答案 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的专家。但这就是我在大多数其他代码中解决这个问题的方法。