Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать нумерацию в формате: 001 (https://javascript.ru/forum/misc/3078-kak-sdelat-numeraciyu-v-formate-001-a.html)

sovka 16.03.2009 17:45

Как сделать нумерацию в формате: 001
 
Приветы!

Помогите плз с циклом, как сделать что i перебирала не 1,2,3 .. N
а так: 001, 002, 003 ... N



<SCRIPT type=text/javascript>
for (var i = 0; i < 999; i++) {
     document.write(
      '<img src='+i+'.jpg><br><br>');
}
</SCRIPT>

Gvozd 16.03.2009 18:04

for (var i = 1; i <= 9; i++) {
     document.write(
      '<img src=00'+i+'.jpg><br><br>');
}
for (var i = 10; i <= 99; i++) {
     document.write(
      '<img src=0'+i+'.jpg><br><br>');
}
for (var i = 100; i < 999; i++) {
     document.write(
      '<img src='+i+'.jpg><br><br>');
}

Kolyaj 16.03.2009 18:04

Number.prototype.pad = function(length) {
    var res = this.toString();
    while (res.length < length)
        res = '0' + res;
    return res;
};

for (var i = 0; i < 999; i++) {
     document.write(
      '<img src='+i.pad(3)+'.jpg><br><br>');
}

Tend 16.03.2009 18:07

Или так:
<SCRIPT type=text/javascript>
function t(x) { return ((x>9)?((x>99)?'':'0'):'00')+x; }
for (var i = 0; i < 999; i++) {
     document.write(
      '<img src='+t(i)+'.jpg><br><br>');
}
</SCRIPT>

Dmitry A. Soshnikov 16.03.2009 18:07

String.prototype.leftPad = function(size, ch) {
  var result = new String(this);
  ch = ch || ' ';
  while (result.length < size) {
    result = ch + result;
  }
  return result.toString();
};

alert((1).toString().leftPad(3, '0'));
alert((99).toString().leftPad(3, '0'));
alert((100).toString().leftPad(3, '0'));


update: ох, нифига себе, меня отвлекли на минуту =) не было ж ни одного ответа )

sovka 16.03.2009 18:44

Какой тут отзывчивый народ! Респект и большое спасибо всем!

sovka 16.03.2009 18:56

До идеала, раз под силу :victory:

Хотелось бы скармливать скрипту строку шаблона
http://www.site.ru/img/$$$.jpg - если i 001
http://www.site.ru/img/$$.jpg - если i 01
http://www.site.ru/img/$.jpg - если i 1

А он принтовал
<img src=http://www.site.ru/img/i.jpg>br><br>

Вот этот самый понятный и короткий, на нем бы:
<SCRIPT type=text/javascript>
function t(x) { return ((x>9)?((x>99)?'':'0'):'00')+x; }
for (var i = 0; i < 999; i++) {
     document.write(
      '<img src='+t(i)+'.jpg><br><br>');
}
</SCRIPT>


Авторы скриптов выше! Спалите в личку кошельки wmz, скромное по паре баксов зашлю :dance:

+$10 за законченный код :)

Gvozd 16.03.2009 19:11

не могу понять ваше условие
попробуйте переформулировать
[telepatmode]
попробую сделать предположение:
вам нужна функция, принимающая параметром шаблон в виде строки "http://www.site.ru/img/$$$.jpg"
знаки долларов будут заменятся на число в формате 001, так чтобы количество цифр было равно количеству долларов, и все возможные варианты последовательно выводилсь?
то есть так:
"http://www.site.ru/img/$.jpg"
<img src=http://www.site.ru/img/1.jpg>br><br>
......
<img src=http://www.site.ru/img/9.jpg>br><br>


"http://www.site.ru/img/$$.jpg"
<img src=http://www.site.ru/img/01.jpg>br><br>
......
<img src=http://www.site.ru/img/99.jpg>br><br>


"http://www.site.ru/img/$$;.jpg"
<img src=http://www.site.ru/img/001.jpg>br><br>
......
<img src=http://www.site.ru/img/999.jpg>br><br>


я правильно понял что вам нужно?
[/telepatmode]

sovka 16.03.2009 21:13

Gvozd, да все правильно.
Отличный у Вас модуль «telepatmode» :)

Gvozd 16.03.2009 21:59

(function(patern){
var t=function(num)//функцию пришлось взять эту(by Kolyaj), для большей универсальности
	{
    var res = num.toString();
    while (res.length < maxlen)
        res = '0' + res;
    return res;
	}
var maxlen=patern.lastIndexOf('$')-patern.indexOf('$')+1;
var part_1=patern.substring(0,patern.indexOf('$'));
var part_2=patern.substring(patern.lastIndexOf('$')+1,patern.length);

for(var i=0,maxnum='';i<maxlen;i++)
	maxnum+='9'
maxnum=+maxnum

for(i=0; i<=maxnum; i++)
	{
	document.write('<img src="'+part_1+t(i)+part_2+'.jpg" /><br><br>\n');
	}
})('http://www.site.ru/img/$$.jpg')//вот тут пишите шаблон
//PS использовал замыкание, чтобы не засорять глобальтную область видимости лишними переменными

PS если будут встречатся еще символы $, кроме как символ подстановки, то скрипт поведет себя "неккорретно"
лечится использованием другого уникального символа подстановки


Часовой пояс GMT +3, время: 19:45.