Javascript.RU

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

Остановка секундомера по достижению значения
Есть секундомер

var minutesLabel = document.getElementById("minutes");
var secondsLabel = document.getElementById("seconds");
var totalSeconds = 0;
setInterval(setTime, 1000);

function setTime() {
  ++totalSeconds;
  secondsLabel.innerHTML = pad(totalSeconds % 99);
  minutesLabel.innerHTML = pad(parseInt(totalSeconds / 99));
}

function pad(val) {
  var valString = val + "";
  if (valString.length < 2) {
    return "0" + valString;
  } else {
    return valString;
  }
}


<label id="minutes">00</label> метров
<label id="seconds">00</label> сантиметров

<div id="info">Информация</div>


Нужно что бы секундомер бым в метра и сантиметрах, по достижению 20 метро и 00 сантиметров, показывался блок "div id="info" , а сам секундомер останавливался и больше не запускался (запись в куки я так понял)

Гугл шерстил хорошо, и подобных решений не нашел
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2019, 22:30
Новичок на форуме
Отправить личное сообщение для neowaring Посмотреть профиль Найти все сообщения от neowaring
 
Регистрация: 25.07.2019
Сообщений: 7

Я установил что 1 минута (метр) считаеться после достижения 99 секунд (сантиметры)
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2019, 00:30
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

neowaring, метр — это единица для измерения расстояния, а секунда — для измерения времени. Поскольку вы хотите измерять время, то вам нужно использовать секунды для своих измерении!

Для измерения бо́льших интервалов времени используется, например — минута, которая составляет 60 секунд. Если вы заинтересованы в измерении времени по 100 секунд, то вы можете использовать гектосекунду, которая составляет 100 секунд.

Вот ваш пример...
<label id="minutes">00</label> <abbr title="гектосекунда">гс</abbr>
<label id="seconds">00</label> <abbr title="секунда">с</abbr>

<div id="info" hidden>Информация</div>

<style> html {font: 250% serif;} abbr {cursor: help;}</style>

<script crossorigin="anonymous" src="https://polyfill.io/v3/polyfill.min.js"></script>
<script>
	
	const isLapsed = "isLapsed" in localStorage;
	const minutesLabel = document.getElementById("minutes");
	const secondsLabel = document.getElementById("seconds");
	const infoElement  = document.getElementById("info");
	
	if(isLapsed) {
		infoElement.hidden = false;
	} else {
		const startTime = Date.now();
		
		(function loop() {

			const passedSeconds = 0.001 * (Date.now() - startTime);
			secondsLabel.innerHTML = parseInt(passedSeconds % 100).toString().padStart(2, "0");
			minutesLabel.innerHTML = parseInt(passedSeconds / 100).toString().padStart(2, "0");
			
			if(passedSeconds >= 2000) {
				infoElement.hidden = false;
				localStorage.isLapsed = true;
			} else {
				setTimeout(loop, 500);
			}
		})();
	}
</script>


Запомните...
  • 1 секунда — 1⁄60 минуты
  • 1 секунда — 1⁄100 гектосекунды

Последний раз редактировалось Malleys, 26.07.2019 в 02:20.
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2019, 02:13
Новичок на форуме
Отправить личное сообщение для neowaring Посмотреть профиль Найти все сообщения от neowaring
 
Регистрация: 25.07.2019
Сообщений: 7

Сообщение от Malleys Посмотреть сообщение
neowaring, метр — это единица для измерения расстояния, а секунда — для измерения времени. Поскольку вы хотите измерять время, то вам нужно использовать секунды для своих измерении!

Для измерения бо́льших интервалов времени используется, например — минута, которая составляет 60 секунд. Если вы заинтересованы в измерении времени по 100 секунд, то вы можете использовать гектосекунду, которая составляет 100 секунд.

Вот ваш пример...
<label id="minutes">00</label> <abbr title="гектосекунда">гс</abbr>
<label id="seconds">00</label> <abbr title="секунда">с</abbr>

<div id="info" hidden>Информация</div>

<style> html {font: 250% serif;} abbr {cursor: help;}</style>

<script>
	
	const isLapsed = "isLapsed" in localStorage;
	const minutesLabel = document.getElementById("minutes");
	const secondsLabel = document.getElementById("seconds");
	const infoElement  = document.getElementById("info");
	
	if(isLapsed) {
		infoElement.hidden = false;
	} else {
		const startTime = Date.now();
		
		(function loop() {

			const passedSeconds = 0.001 * (Date.now() - startTime);
			secondsLabel.innerHTML = parseInt(passedSeconds % 100).toString().padStart(2, "0");
			minutesLabel.innerHTML = parseInt(passedSeconds / 100).toString().padStart(2, "0");
			
			if(passedSeconds >= 2000) {
				infoElement.hidden = false;
				localStorage.isLapsed = true;
			} else {
				setTimeout(loop, 500);
			}
		})();
	}
</script>


Запомните...
  • 1 секунда — 1⁄60 минуты
  • 1 секунда — 1⁄100 гектосекунды
Суть то понятна. Переместил код к себе в html. и он не работает между тегами body.
Ответить с цитированием
  #5 (permalink)  
Старый 26.07.2019, 02:14
Новичок на форуме
Отправить личное сообщение для neowaring Посмотреть профиль Найти все сообщения от neowaring
 
Регистрация: 25.07.2019
Сообщений: 7

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<label id="minutes">00</label> <abbr title="гектосекунда">гс</abbr>
<label id="seconds">00</label> <abbr title="секунда">с</abbr>

<div id="info" hidden>Информация</div>

<style> html {font: 250% serif;} abbr {cursor: help;}</style>

<script>
	
	const isLapsed = "isLapsed" in localStorage;
	const minutesLabel = document.getElementById("minutes");
	const secondsLabel = document.getElementById("seconds");
	const infoElement  = document.getElementById("info");
	
	if(isLapsed) {
		infoElement.hidden = false;
	} else {
		const startTime = Date.now();
		
		(function loop() {

			const passedSeconds = 0.001 * (Date.now() - startTime);
			secondsLabel.innerHTML = parseInt(passedSeconds % 100).toString().padStart(2, "0");
			minutesLabel.innerHTML = parseInt(passedSeconds / 100).toString().padStart(2, "0");
			
			if(passedSeconds >= 2000) {
				infoElement.hidden = false;
				localStorage.isLapsed = true;
			} else {
				setTimeout(loop, 500);
			}
		})();
	}
</script>

</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 26.07.2019, 02:19
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от neowaring
Переместил код к себе в html. и он не работает между тегами body.
А тут работает? Ну если нажать кнопку Посмотреть в примере выше?

Возможно вы используете старый браузер, и вам нужно добавить костыли (polyfill) для эмуляции недостающих методов! Добавил в пример выше!

Сообщение от Русский
Ну если мы рассматриваем время как одно из измерений нашего 4-мерного пространства, то на вполне законных основаниях можем измерять его и в метрах (1 с = 300000 км).
Вы перепутали математическое четырёхмерное пространство с физическим пространством-временем, и сделали совершенно ошибочный вывод!

Последний раз редактировалось Malleys, 26.07.2019 в 02:51.
Ответить с цитированием
  #7 (permalink)  
Старый 26.07.2019, 10:03
Новичок на форуме
Отправить личное сообщение для neowaring Посмотреть профиль Найти все сообщения от neowaring
 
Регистрация: 25.07.2019
Сообщений: 7

Сообщение от Malleys Посмотреть сообщение
А тут работает? Ну если нажать кнопку Посмотреть в примере выше?
Да , тут работает. и в html файле через компюютер работает.

Вот результат который я пытаюсь получить. Отсчет сантиметров и метров в шапке сайта

Последний раз редактировалось neowaring, 26.07.2019 в 10:13.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать значения переменной из одного фрейма в другой в Google Chrome Freestyle007 Events/DOM/Window 17 20.06.2019 14:28
Почему возвращает значения RGB каналов? Black_Star jQuery 14 06.02.2017 04:49
Input type="time" + JS +Safari (iPhone) dpts Opera, Safari и др. 0 21.09.2016 07:24
Input type="time" + JS +Safari (iPhone) dpts Opera, Safari и др. 0 21.09.2016 07:24
Множественные значения в input - ЗА ВОЗНАГРАЖДЕНИЕ! Pb160 Events/DOM/Window 0 03.08.2015 12:29