Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2020, 13:14
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Как подключить или просто кодам написать следующий таймер?
Есть таймер
function timer(elem, min, sec) {
  (--sec < 0) && (sec = min-- ? 59 : 0);
  min = Math.max(min, 0);
  elem.innerHTML = min + " : " + sec;
  if (sec || min)
    setTimeout(timer.bind(0, elem, min, sec), 1000);
  else {
    alert('Время вышло!');
    location.href = "/rekord.html";
  }
}

timer(document.getElementById('play_timer'), 3, 0);

//Время в игре

function tick() {
  var nowTime = new Date();
  console.log('прошло секунд: ' + (nowTime + timer) / 1000);


А вот нашел таймер который записывает данный в локал стореч(на основе стандартных JQuery )
var interval;
let minutes = 1;
let currentTime = localStorage.getItem('currentTime');
let targetTime = localStorage.getItem('targetTime');
if (targetTime == null && currentTime == null) {
     currentTime = new Date();
     targetTime = new Date(currentTime.getTime() + (minutes * 60000));
     localStorage.setItem('currentTime', currentTime);
     localStorage.setItem('targetTime', targetTime);
}
else{
     currentTime = new Date(currentTime);
     targetTime = new Date(targetTime);
}

if(!checkComplete()){
     interval = setInterval(checkComplete, 1000);
}

function checkComplete() {
     if (currentTime > targetTime) {
       clearInterval(interval);
       alert("Time is up");
     } else {
       currentTime = new Date();
       document.write(
        "\n <font color=\"white\"> Seconds Remaining:" + ((targetTime - currentTime) / 1000) + "</font>");
     }
}

document.onbeforeunload = function(){
     localStorage.setItem('currentTime', currentTime);
}

Подскажите, как переделать, так что бы он работал без подключения просто на JS.
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2020, 13:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Pavel_16,
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2020, 13:40
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Сообщение от рони Посмотреть сообщение
Pavel_16,
да рони и мне не понятно многое)))
все продолжаю бороться с тем же ,но осталось только захватить киким-то образом время от начала загрузки страницы и поместить его в стореч. Но таймер должен отображаться для пользователя..
Ответить с цитированием
  #4 (permalink)  
Старый 05.04.2020, 14:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Pavel_16,
я не понимаю, что вы пишите, в чём проблема?
Ответить с цитированием
  #5 (permalink)  
Старый 05.04.2020, 14:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Pavel_16,
if ([...elements].every(ep => ep.getAttribute('fill') != '#ffffff')) {
      tick();
      let time = document.getElementById('play_timer').innerHTML;
      // здесь сохраняйте куда вам нужно
      setTimeout(() => alert('Вы всё закрасили!'));
      /*location.href = "/rekord.html";*/
    }
Ответить с цитированием
  #6 (permalink)  
Старый 05.04.2020, 16:01
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Сообщение от рони Посмотреть сообщение
Pavel_16,
if ([...elements].every(ep => ep.getAttribute('fill') != '#ffffff')) {
      tick();
      let time = document.getElementById('play_timer').innerHTML;
      // здесь сохраняйте куда вам нужно
      setTimeout(() => alert('Вы всё закрасили!'));
      /*location.href = "/rekord.html";*/
    }
Сообщение от рони
// здесь сохраняйте куда вам нужно
у меня есть некий локал стореч, куда до этого было имя записано, туда же нужно сохранить и время, дописать к имени, (простите, если не так излогаюсь), а в таблице по запросу вывести имя и рекорд.

"use strict";

$(document).ready(function(){

if (localStorage.getItem("users") === null) {
  $.getJSON('Storage/users.json', function(users) {
    localStorage.setItem("users", JSON.stringify(users));
  });
}

var users = localStorage.getItem("users");

var $select = $('#name');  
$select.ready(function(event){ 
    $.each(JSON.parse(users), function (key, value) {
      $('<option>').val(value.name).text(value.name).appendTo($select);
    });
});

$('#play_game').click(function() {
  var userName = $('#new_name').val();
  var newUser = {name:userName};
  users = JSON.parse(users);
  users.push(newUser);
  console.log(users);
  localStorage.setItem("users", JSON.stringify(users));
});
});
Ответить с цитированием
  #7 (permalink)  
Старый 05.04.2020, 16:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Pavel_16,
надо обьединять скрипты, чтоб имя было доступно в игре ...
как то так ...
if ([...elements].every(ep => ep.getAttribute('fill') != '#ffffff')) {
      tick();
      let time = document.getElementById('play_timer').innerHTML;
      newUser.time = time;
      localStorage.setItem("users", JSON.stringify(users));
      // здесь вывод таблицы на основе обьекта users
      setTimeout(() => alert('Вы всё закрасили!'));
      /*location.href = "/rekord.html";*/
    }
Ответить с цитированием
  #8 (permalink)  
Старый 05.04.2020, 20:55
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Сообщение от рони Посмотреть сообщение
Pavel_16,
надо обьединять скрипты, чтоб имя было доступно в игре ...
как то так ...
if ([...elements].every(ep => ep.getAttribute('fill') != '#ffffff')) {
      tick();
      let time = document.getElementById('play_timer').innerHTML;
      newUser.time = time;
      localStorage.setItem("users", JSON.stringify(users));
      // здесь вывод таблицы на основе обьекта users
      setTimeout(() => alert('Вы всё закрасили!'));
      /*location.href = "/rekord.html";*/
    }
не работает, вот что выдаёт
svg.js:54 Uncaught ReferenceError: newUser is not defined
at SVGPathElement.handleClick (svg.js:54)
handleClick @ svg.js:54
+ до это-го прошло секунд: NaN
Ответить с цитированием
  #9 (permalink)  
Старый 05.04.2020, 21:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Pavel_16
не работает,
Сообщение от рони
надо обьединять скрипты, чтоб имя было доступно в игре ...
Ответить с цитированием
  #10 (permalink)  
Старый 05.04.2020, 21:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Pavel_16,
var userName и var newUser нужно сделать глобальными
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обновить часть страницы через js или ajax или jquery? bridun Общие вопросы Javascript 1 08.08.2019 14:21
Как сделать чтоб функция выволнялась по click один раз или просто выполнялась? TaH4uk.pro jQuery 1 06.12.2012 22:41
Восторг в античной ForYourself ювелирные изделия тибетской или дать как подарок whistle123 Events/DOM/Window 0 03.12.2012 10:09
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
30(1|2) редирект от сервера. Или как лучше сделать редирект при верной отсылке форма. pizzZ AJAX и COMET 2 18.02.2010 09:06