Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод дней, дня, день в JS

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
webog
Отправлено: 28 Октября, 2015 - 17:12:09
Post Id


Частый гость


Покинул форум
Сообщений всего: 242
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)

[+]


Всем добра!

Не могу побороть, видимо от незнания.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.                 if(value == 1 || value == 21){
  3.                         day = " день";
  4.                 }
  5.                 else {
  6.                         day = " дней";
  7.                 }
  8.  
  9.                 if(value == 2 || value == 3 || value == 4){
  10.                         day = " дня";
  11.                 }
  12.                 else {
  13.                         day = " дней";
  14.                 }


Работает: 2, 3, 4 дня. 21 день - НЕ выводит.

Как победить?

Спасибо!


-----
Hello!
 
 Top
IllusionMH
Отправлено: 28 Октября, 2015 - 17:16:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




webog, у вас 2 независимых условия. Для 21 значеине переменной присваивается дважды.
Пройдитесь пошагово или в консоль выводите строку в которой происходит присвоеине при каждом присвоении, станет понятно ;)

(Отредактировано автором: 28 Октября, 2015 - 17:17:42)

 
 Top
webog
Отправлено: 28 Октября, 2015 - 17:20:11
Post Id


Частый гость


Покинул форум
Сообщений всего: 242
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)

[+]


То что "присваевается" это я понял. Как сделать код универсальным, допустим до 100 (100 дней, 51 день) и как сделать без присвоения.


-----
Hello!
 
 Top
IllusionMH
Отправлено: 28 Октября, 2015 - 17:24:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




webog, составить набор условий/исключений и проверять.
отдельно проверяется диапазон 11-19.
А в остальных случаях проверять остаток от деления на 10, как в коде выше.

(Отредактировано автором: 28 Октября, 2015 - 17:24:56)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Октября, 2015 - 17:39:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Поискать "javascript склонение существительных" не пробовали?
У меня в топе гугла выводится http://habrahabr[dot]ru/post/105428/ с кучей реализаций для разных языков.


-----
PostgreSQL DBA
 
 Top
webog
Отправлено: 28 Октября, 2015 - 17:51:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 242
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)

[+]


Всем спасибо! Тему можно закрывать.

P.S. Кому нужно решение:

CODE (javascript):
скопировать код в буфер обмена
  1. /**
  2.  * Функция возвращает окончание для множественного числа слова на основании числа и массива окончаний
  3.  * @param  iNumber Integer Число на основе которого нужно сформировать окончание
  4.  * @param  aEndings Array Массив слов или окончаний для чисел (1, 4, 5),
  5.  *         например ['яблоко', 'яблока', 'яблок']
  6.  * @return String
  7.  */
  8. function getNumEnding(iNumber, aEndings)
  9. {
  10.     var sEnding, i;
  11.     iNumber = iNumber % 100;
  12.     if (iNumber>=11 && iNumber<=19) {
  13.         sEnding=aEndings[2];
  14.     }
  15.     else {
  16.         i = iNumber % 10;
  17.         switch (i)
  18.         {
  19.             case (1): sEnding = aEndings[0]; break;
  20.             case (2):
  21.             case (3):
  22.             case (4): sEnding = aEndings[1]; break;
  23.             default: sEnding = aEndings[2];
  24.         }
  25.     }
  26.     return sEnding;
  27. }


-----
Hello!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB