Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2019, 15:39
Новичок на форуме
Отправить личное сообщение для Temax Посмотреть профиль Найти все сообщения от Temax
 
Регистрация: 14.08.2019
Сообщений: 2

Проблема с SetTimeOut оповещением
Здравствуйте, хочу сделать напоминание на сайте, где время оповещения выбирает пользователь, но SetTimeOut не отрабатывает как надо, я хотел достать время через поля number, потом перевести все в часы и установить delay для SetTimeOut

Вот код:

<input class = "mt-3" type="button" value = "Напомнить мне" onclick = "notifSet()">
  <br>
  <label for="">Day:
  <input name = "day" min = "0" max = "30" type="number">
  </label>
  <label for="">Hour:
  <input name = "hour" min = "0" max = "24" type="number">
  </label>
  <label for="">Minute:
  <input name = "minute" min = "0" max = "60" type="number">
  </label>
  <label for="">Seconde:
  <input name = "seconde" min = "0" max = "60" type="number">
  </label>


function notifyMe () {
  	var notification = new Notification ("ToDo List App", {
  		tag : "ache-mail",
  		body : "Вам пришло уведомление",
  	});
  }


  function notifSet () {
    var day = document.getElementsByName("day").value;
    var hour = document.getElementsByName("hour").value;
    var minute = document.getElementsByName("minute").value;
    var seconde = document.getElementsByName("seconde").value;
    day = parseFloat(day);
    hour = parseFloat(hour);
    minute = parseFloat(minute);
    seconde = parseFloat(seconde);
    if(hour === 24){
      day++;
    }
    if(minute === 60){
      hour++;
    }
    if(seconde === 60){
      minute++;
    }

    day = day * 24;
    minute = minute / 60;
    seconde = seconde / 3600;
    var sum = day + minute + hour + seconde;
    var res = sum * 3600000;
  	if (!("Notification" in window))
  		alert ("Ваш браузер не поддерживает уведомления.");
  	else if (Notification.permission === "granted")
  		setTimeout(notifyMe, res);
  	else if (Notification.permission !== "denied") {
  		Notification.requestPermission (function (permission) {
  			if (!('permission' in Notification))
  				Notification.permission = permission;
  			if (permission === "granted")
  				setTimeout(notifyMe, res);
  		});
  	}
  }
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2019, 15:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Temax, тебе нужно просто перевести все в миллисекунды...
Зачем ты делаешь все эти лишние вычисления и сравнения?
Просто умножь дни на количество в них миллисекунд... Потом аналогично поступи с часами, минутами и секундами...
Потом все сложи - это и есть нужная пауза.
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2019, 16:23
Новичок на форуме
Отправить личное сообщение для Temax Посмотреть профиль Найти все сообщения от Temax
 
Регистрация: 14.08.2019
Сообщений: 2

Спасибо Вам за помощь, все заработало, да я реально ступил, что можно было сразу в миллисекунды перевести и еще не срабатывало потому что getElementsByName было. я поставил ById и все сработало!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена background при нажатии JIeuTo Общие вопросы Javascript 5 14.09.2018 18:48
Проблема с setTimeout kdlinny Events/DOM/Window 5 27.01.2014 15:09
Проблема со вставкой setTimeout в скрипт MasterDmx Общие вопросы Javascript 3 13.06.2013 01:37
Проблема с setTimeout при первой загрузке в Chrome slobodchuk jQuery 1 17.02.2012 02:16
Аргументы в setTimeout - проблема в IE 6 micscr Общие вопросы Javascript 8 28.09.2009 13:08