Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.08.2017, 16:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от Белый шум
через 92 секунд
Шайтан курбаши!

До туда я не долистал...
Ответить с цитированием
  #12 (permalink)  
Старый 22.08.2017, 16:12
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Я понял, где моя ошибка и как нужно было сделать. Спасибо вам!
И еще, скажите, пожалуйста, закрытие окна я пишу как отдельной функцией
jQuery('.close').click(function(e) {
    e.preventDefault();
    jQuery('.pop_up').fadeOut(0);
});

Конечно же, все работает, но это правильно? или же это можно как-то сократить?
Ответить с цитированием
  #13 (permalink)  
Старый 22.08.2017, 16:17
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 501

правильно
Ответить с цитированием
  #14 (permalink)  
Старый 22.08.2017, 16:23
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Огромное спасибо за помощь, и удачи вам!
Ответить с цитированием
  #15 (permalink)  
Старый 22.08.2017, 16:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Вроде рабочий вариант...

<script type='text/javascript'>
function test(Sec){
	if (Sec>10 && Sec<15) return 'секунд';
	switch (Sec%10) {
		case 1:
			return 'секунду';
		case 2:	case 3:	case 4:
			return 'секунды';
	};
	return 'секунд';
};
for (var i=0; i<200; i++){
	document.write('через '+i+' '+test(i)+'<br />');
};
</script>
Ответить с цитированием
  #16 (permalink)  
Старый 22.08.2017, 16:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

полная версия plural и не только
https://javascript.ru/forum/misc/351...tml#post231512
Ответить с цитированием
  #17 (permalink)  
Старый 22.08.2017, 17:26
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 501

Сообщение от ksa
через 111 секунду
через 112 секунды
%)


рони,
слишком много математики, имхо. И читать сложно, и проц напрягать...
Ответить с цитированием
  #18 (permalink)  
Старый 22.08.2017, 18:17
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 219

Вот блин, снова не получается, да что же я не так делаю? Я прошу прощения. Смотрите, добавил функцию cookie, где при нажатии на "больше не показывать окно", ставится cookie, но мало того что явно делаю что-то не так, так еще и синтаксическая ошибка. jQuery Cookie Plugin v1.4.1 к сайту подключен. Помогите, пожалуйста?
jQuery(document).ready(function($) {
	if (typeof $.cookie('pop_up') === 'undefined') { 
	var date = new Date();
	var period = 3; //например, на 3 дня
	date.setTime(date.getTime() + period * 24 * 60 * 60 * 1000);
	$.cookie('pop_up', 'yes', {
	expires: date,
	path: '/'
	});
  
  $('.timer').prepend('<div class="left">Можно будет закрыть через <span></span></div>');
  var msg = plural([' секунд',' секунду',' секунды']);
  var delay = 1,
    seconds = 3;
  $('.left span').text(seconds+msg(seconds));
  $('.pop_up').delay(delay * 1000).fadeIn(800, function() {
    var int;
    int = setInterval(function() {
      if (seconds > 1) {
        $('.left span').text((seconds - 1)+msg(seconds - 1));
        seconds--;
      } else {
        $('.left').remove();
        $('.pop_up .close').show();
        clearInterval(int);
      }
    }, 1000);
  });
});
function plural(arr) {
    var get = [0,1,2,2,2,0,0,0,0,0];
    return function(num) {
                if( String.prototype.slice.call(num, -2,-1) === '1' ) return arr[0];
        num = String.prototype.slice.call(num, -1);
                return arr[ get[num] ];
        }
	}
}
jQuery('.close, .close_cookie').click(function(e) {
    e.preventDefault();
    jQuery('.pop_up').fadeOut(0);
});

ну и в html соответственно изменения:
<div class="pop_up">Я модальное окно
  <div class="timer">
    <div class="close">Закрыть окно</div>
    <div class="close close_cookie">Больше не показывать</div>
  </div>
</div>

Еще раз прошу прощения за беспокойство!
Ответить с цитированием
  #19 (permalink)  
Старый 23.08.2017, 08:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,201

Сообщение от Белый шум
через 111 секунду
через 112 секунды
Усилим нажим...

<script type='text/javascript'>
function test(Sec){
	var val=Sec%100;
	if (val>10 && val<15) return 'секунд';
	switch (Sec%10) {
		case 1:
			return 'секунду';
		case 2:	case 3:	case 4:
			return 'секунды';
	};
	return 'секунд';
};
for (var i=0; i<200; i++){
	document.write('через '+i+' '+test(i)+'<br />');
};
</script>

Последний раз редактировалось ksa, 23.08.2017 в 08:31.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить склонение fAmOus Элементы интерфейса 7 31.08.2012 03:02
склонение по падежам genius_kld Общие вопросы Javascript 1 04.04.2012 15:39
Как сделать склонение? sardonyx Элементы интерфейса 0 24.09.2011 21:58