Коля Дубр: Как отсчитать кол-во дней - сами разбирайтесь, это не сложно. А вот выбрать правильную форму - задача несколько менее тривиальная. Вот кусочек кода, проверьте:
function getDays(x) {
var un = x - 10 * Math.floor(x / 10); // Единицы
var de = ((x - 100 * Math.floor(x / 100)) - un) / 10 ; // Десятки
var word = '';
switch (un) {
default:
word = 'дней';
break;
case 1:
word = (de != 1) ? 'день' : 'дней';
break;
case 2: case 3: case 4:
word = (de != 1) ? 'дня' : 'дней';
break;
}
return word;
}
for (var i = 0; i < 1000; i++) {
document.write(i + ' ' + getDays(i) + "<Br />");
}
пасиба. завтра на свежую голову попробую довести до ума
Так вроде правильнее считает :) Если имелось в виду, то что день не доставало. По крайней мере в следующем месяце правильно считает..
Если проблема не в этом, то, плз, озвучьте её..
update: пока писал не было описания проблемы :)
проблема следующая: отчитываются дни до заданного события. Сейчас например 655 дней. Если в поле
d0 = new Date('August 12, 2008');
задать 'August 11, 2008' , то скрипт опять сгенерирует 654 дней. 'August 10, 2008' - 653 дней и т.д.
Насколько я понял в операторе switch() выбирается всё время значение case 0. Оно в принципе и логично, если бы тип переменных был float. Но на момент написания скрипта я полагал, что JS работает только с целочисленным типом данных int.
Возможно Вы знаете как задать тип int в явном виде для переменной х?
dkameleon: скопировал код один в один. на первый взгляд всё работает.
детальнее опишите проблему.
ну проблема в том, что когда количество дней например 660, то добавляется "дней". когда 653, то добавляется опять "дней". а хотелось бы "дня" чтобы добавлялось после числа
Как отсчитать кол-во дней - сами разбирайтесь, это не сложно. А вот выбрать правильную форму - задача несколько менее тривиальная. Вот кусочек кода, проверьте:
пасиба. завтра на свежую голову попробую довести до ума
А вот и мой способ:
Сама идея взята отсюда
http://www.simplex.ru/news/win/1-16.html
и переделана мной только что :) Оригинал для данной задачи не хотел работать, пришло основательно его обработать наждаком :)
update: при том так, что можно уже авторство было бы и не указывать :)
что-то у меня по-прежнему всё время выдает "дней" для всех чисел )
Задача вот какая:
Сейчас
659 дней
658 дней
657 дней
656 дней
655 дней
654 дней
653 дней
652 дней
651 дней
650 дней
А хотелось бы
659 дней
658 дней
657 дней
656 дней
655 дней
654 днЯ
653 днЯ
652 днЯ
651 день
650 дней
Так вроде правильнее считает :) Если имелось в виду, то что день не доставало. По крайней мере в следующем месяце правильно считает..
Если проблема не в этом, то, плз, озвучьте её..
update: пока писал не было описания проблемы :)
проблема следующая: отчитываются дни до заданного события. Сейчас например 655 дней. Если в поле
d0 = new Date('August 12, 2008');задать 'August 11, 2008' , то скрипт опять сгенерирует 654 дней. 'August 10, 2008' - 653 дней и т.д.Насколько я понял в операторе switch() выбирается всё время значение case 0. Оно в принципе и логично, если бы тип переменных был float. Но на момент написания скрипта я полагал, что JS работает только с целочисленным типом данных int.
Возможно Вы знаете как задать тип int в явном виде для переменной х?
скопировал код один в один. на первый взгляд всё работает.
детальнее опишите проблему.
ну проблема в том, что когда количество дней например 660, то добавляется "дней". когда 653, то добавляется опять "дней". а хотелось бы "дня" чтобы добавлялось после числа
цикл switch(). отлично сказал :) время сказывается. конечно же оператор!