Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2011, 02:00   #1
vkontakte
 
Регистрация: 11.09.2011
Сообщений: 4
Восклицание Склеить скрипт Время суток+Вы были тут N раз+склонение *РАЗ*_*РАЗА*

Здравствуйте! Помогите, пожалуйста!


На основе этого:

Код HTML:
<script type="text/javascript">
var h=(new Date()).getHours();
if (h > 23 || h < 7) document.write("<font face=verdana size=-1>Доброй ночи,</font>");
if (h > 6 && h < 12) document.write("<font face=verdana size=-1>С добрым утром,</font>");
if (h > 11 && h < 19) document.write("<font face=verdana size=-1>Добрый день,</font>");
if (h > 18 && h < 24) document. write("<font face=verdana size=-1>Добрый вечер,</font>");
</script>
<script language="JavaScript">
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function DeleteCookie (name) {
var exp = new Date();
exp.setTime (exp.getTime() - 1);
// This cookie is history
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
var expDays = 30;
var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
function name(n){
if(n != null) {
var name = name
}
else if(GetCookie('name') != null) {
var name = GetCookie('name')
}
else {
var name = prompt("Здравствуйте! Представьтесь пожалуйста:",'');
if(name == null || name == "") {
name = "пользователь"
}
else {
SetCookie('name',name,exp);
}
}
return name;
}
function time() {
var days = new Array(7)
days[1] = "в воскресенье";
days[2] = "в понедельник";
days[3] = "во вторник";
days[4] = "в среду";
days[5] = "в четверг";
days[6] = "в пятницу";
days[7] = "в субботу";
var months = new Array(12)
months[1] = "Января";
months[2] = "Февраля";
months[3] = "Марта";
months[4] = "Апреля";
months[5] = "Мая";
months[6] = "Июня";
months[7] = "Июля";
months[8] = "Августа";
months[9] = "Сентября";
months[10] = "Октября";
months[11] = "Ноября";
months[12] = "Декабря";
var today = new Date()
var day = days[today.getDay() + 1]
var month = months[today.getMonth() + 1]
var date = today.getDate()
var full = day + ", " + date + " " + month
if(GetCookie('date') != null) {
var savedate = GetCookie('date')
DeleteCookie('date')
SetCookie('date',full,exp)
return savedate
}
else {
SetCookie('date',full,exp)
return null
}
}
function amt(){
var count = GetCookie('count')
if(count == null) {
SetCookie('count','1')
return 0
}
else {
var newcount = parseInt(count) + 1;
DeleteCookie('count')
SetCookie('count',newcount,exp)
return count
}
}
function print(what) {
if(what == "name") {
return name()
}
else if(what == "date") {
if(time() == null) {
return "Вы тут впервые"
}
else {
return time()
}
}
else if(what == "times") {
return amt()
}
}
function process(how) {
if(how == 'newname') {
SetCookie('name',prompt('Your Name?',''))
location.reload()
}
else if(how == 'newprofile') {
DeleteCookie('name')
DeleteCookie('count')
DeleteCookie('date')
location.reload()
}
}
// --End Hiding Here -->
</script>
<script>document.write("<font face=verdana size=-1><b>" + print('name') + "</b> Вы были тут <b>" +
 print('times') + "</b> раз. Последний раз: <b>" + print('date') +"</b>.")
</script>
и:

PHP код:
<?php
// что
$num1=2;
$words1=Array("раз""раза");
 
// Написать по-русски
echo "Вы были тут";
echo 
$num1." ".num2word($num1,$words1); // что
?>
мне нужно, что бы грамотно прописывалось "раз" . Т.Е.

Доброй ночи, пользователь Вы были тут 0 раз. Последний раз: Вы тут впервые

Доброй ночи, пользователь Вы были тут 2 разА. Последний раз: Вы тут впервые



Последний раз редактировалось JTG; 12.09.2011 в 14:43.
vkontakte вне форума Ответить с цитированием
Старый 11.09.2011, 19:06   #2
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию

у меня было про ворон но принцип тот же
Цитата:
вот смотри
0 раз
1 раз
2 раза
3 раза
4 раза

5 раз
.
.
101 раз
102 раза
103 раза
104 раза

105 раз
.
.
201 раз
т.е. если в конце числа встречаются числа 2,3,4 то тогда ставь Раза иначе Раз.

можно через регулярные выражения
как вам удобно

Последний раз редактировалось X@OC; 11.09.2011 в 19:08.
X@OC вне форума Ответить с цитированием
Старый 12.09.2011, 00:06   #3
vkontakte
 
Регистрация: 11.09.2011
Сообщений: 4
По умолчанию

это понятно, вот только как написать такой алгоритм?

у меня разваливается главный скрипт определения кол-ва раз посещений, если приписать к нему скрипт [раз(ов)]
vkontakte вне форума Ответить с цитированием
Старый 12.09.2011, 00:55   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
т.е. если в конце числа встречаются числа 2,3,4 то тогда ставь Раза иначе Раз.
Вы ошибаетесь.
есть исключения. надо проверять, не закачивается ли число на:
12
13
14

на Паскале алгоритм бы выглядел так:
Код:
  {обработка исключении 11 12 13 14}
  if ((k mod 100)>=11) and ((k mod 100)<=14) then
      sEnding := ' раз'
  else
    case (k mod 10) of
      2..4: sEnding := ' раза';
    else
     sEnding := ' раз';
    end;
p.s. vkontakte, сорри, в javascript я не силён, поэтому не могу помочь конкретным кусочком кода...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2011, 14:41   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

На JS вот есть такое

Код:
function makeEnding(number, prefix, one, two, many) {
    snumber = number.toString()
    digit = parseInt(snumber[snumber.length-1], 10);
    if (isNaN(digit)) {return ""}  
  
    if (snumber.length > 1 && snumber[snumber.length-2] == '1') {return number + " " + prefix + many;}
    if (digit == 1) {return number + " " + prefix + one;}
    else if (digit > 1 && digit <= 4) {return number + " " + prefix + two;}
    else if (digit == 0 || digit >= 5) {return number + " " + prefix + many;} 
    else {return ""}
}
Использовать так:
Код:
makeEnding(5, "товар", "", "а", "ов");
makeEnding(5, "раз", "", "а", "");
пыщь

Последний раз редактировалось JTG; 12.09.2011 в 14:44.
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
понимаю вопрос много раз тут обсуждался artush1984 Свободное общение 13 07.07.2011 18:10
Удалить 2 раза в строке слово, встречающееся более трех раз Новикова Ирина Помощь студентам 1 20.02.2011 20:10
Скрипт выполняется только один раз MAKSA JavaScript, Ajax 6 12.02.2010 13:48
раз уж тут весь раздел забит всякими играми Juffin Свободное общение 10 26.10.2009 22:29
Ребята я тут первый раз... непоседа Помощь студентам 0 20.04.2009 10:05