Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   склонение в зависимости от числа (https://javascript.ru/forum/dom-window/37644-sklonenie-v-zavisimosti-ot-chisla.html)

sashgera 28.04.2013 22:19

склонение в зависимости от числа
 
Здравствуйте
Есть форма обратной связи (php)
после отправки письма использую js редирект c визуальным счетчиком обратного отсчета

<script type="text/javascript">
var i = 5;
var str = i;
$('#counter').text(str);
function time(){
 document.getElementById("time").innerHTML = i;
 i--;
 if (i < 0) location.href = "?page=oplata_";
}
time();
setInterval(time, 1000);
</script>

echo '<h3 style="padding: 0px 5px 15px 5px; text-align: center; font-size: 14px; font-weight: bold; color: #5B3E00; width: 100%;">Сообщение успешно отправлено!<br><br>через <font color="red"><b><span id="time" id="counter">5</b></span></font> секунд страница обновится автоматически</h3>';


как можно дополнить js, чтобы слово СЕКУНД в зависимости от числа склонялась на - секунда, секунды
в сети много информации как это сделать, например
function declOfNum(number, titles)  
{  
    cases = [2, 0, 1, 1, 1, 2];  
    return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];  
}
но у меня ничего не получается

dmitriymar 28.04.2013 23:37

Воспользуйтесь поиском форума, гугла -тема неоднократно уже была, как и её решения

sashgera 29.04.2013 00:09

Цитата:

Сообщение от dmitriymar (Сообщение 248398)
Воспользуйтесь поиском форума, гугла -тема неоднократно уже была, как и её решения

внимательней читайте что я написал - искал, нашел, но ничего не получается. форум тогда зачем? Я просто прошу о помощи:help:

рони 29.04.2013 00:38

sashgera,
http://javascript.ru/forum/misc/3516...tml#post231512

sashgera 29.04.2013 01:29

Цитата:

Сообщение от nasqad (Сообщение 248405)
:-? да нет вы ничего не поняли, человек не знает javascript, он просто хочет чтобы вы сделали это за него

Вы совершенно правы, я не знаю js, это видно из сказанного мною выше, и поэтому прошу помощи – дописать несколько строк. Когда увижу результат, я наверное пойму как это сделать. Поверьте, я целый день пытаюсь сделать эти склонения. Свои творения я показывать не хочу (не работают)

dmitriymar 29.04.2013 08:06

Цитата:

Сообщение от sashgera
Вы совершенно правы, я не знаю js, это видно из сказанного мною выше, и поэтому прошу помощи – дописать несколько строк. Когда увижу результат, я наверное пойму как это сделать. Поверьте, я целый день пытаюсь сделать эти склонения. Свои творения я показывать не хочу (не работают)

Вы просите готовый скрипт с нуля.

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

sashgera 29.04.2013 21:13

Цитата:

Сообщение от dmitriymar (Сообщение 248412)
Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

Я не прошу что-то сделать за меня с нуля. Я уже выложил таймер и просил помочь его усовершенствовать. Но тем не менее я понял Вас – пожалуйста, посмотрите и если невлом, помогите:
<script type="text/javascript">
var i = 5;
var str = i;
$('#counter').text(str);
function time ()
{
var declOfNum(seconds, ['секунда', 'секунды', 'секунд']);
{  
    var  cases = [2, 0, 1, 1, 1, 2];  
    return titles[ 
            (seconds % 100 > 4 && seconds % 100 < 20) 
            ? 
            2 
            : 
            cases[(seconds % 10 < 5) ? seconds % 10 : 5] 
    ];  
} 
document.getElementById ('time').innerHTML = declOfNum [i--];
 if (i < 0) location.href = "?page=oplata_";
}
time();
setInterval(time, 1000);
</script>

echo 'Сообщение успешно отправлено!<br>через <span id="time" id="counter">5</span>  страница обновится автоматически';

рони 29.04.2013 21:34

sashgera,
:cray:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>Сообщение успешно отправлено!<br>через <span id="time" id="counter">5</span>  страница обновится автоматически;
<script type="text/javascript">
var i = 5;
var str = i;
//$('#counter').text(str);
function declOfNum(number, titles)
{
    cases = [2, 0, 1, 1, 1, 2];
    return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
function time ()
{

document.getElementById ('time').innerHTML = --i+" "+declOfNum (i, ['секунду', 'секунды', 'секунд']);
 //if (i < 0) location.href = "?page=oplata_";

}
//time();
setInterval(time, 1000);
</script>
</body>
</html>

sashgera 29.04.2013 22:59

рони, большое спасибо! Все работает! Только один момент смущает – после того, когда таймер доходит до нуля, должен быть редирект на страницу. Но у меня почему-то после нуля таймер показывает -1 undefined, а потом только редирект…
Если объясните почему так, буду очень благодарен

sashgera 29.04.2013 23:27

рони,
кажется, я нашел ответ на свой вопрос, сделал так
if (i < 1) location.href = "?page=oplata_";


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