Таймер Jquery на разных сценариях [dубликат]

[D0] Почти.

for(; iter != endIter; ) { if (Some Condition) { aMap.erase(iter++); } else { ++iter; } }

То, что вы изначально могли бы увеличить итератор дважды, если вы удалили из него элемент; вы можете пропустить элементы, которые нужно удалить.

Это общий алгоритм, который я видел во многих местах и ​​документировал.

[EDIT] Вы правы, что итераторы недействительны после стирания, но только итераторы, ссылающиеся на стираемый элемент, остаются в силе иными итераторами. Следовательно, используя iter ++ в вызове erase ().

42
задан Ganesh Shankar 9 April 2010 в 01:54
поделиться

8 ответов

Вы ищете функцию setInterval , которая запускает функцию каждые x миллисекунды.

Например:

  ]  var start = new Date;  setInterval (function () {$ ('. Timer'). text ((новая дата - начало) / 1000 + «Секунды»);}, 1000);   
90
ответ дан SLaks 16 August 2018 в 04:58
поделиться
  • 1
    Дает мне 1.001 секунды, 2.001, 3.001 и т. Д. Через 10 секунд десятичные знаки исчезли. Думаю, нам нужен круглый () здесь? – Kai Noack 6 October 2013 в 21:23
  • 2
    Этот код будет хорошо выглядеть. $ («Таймер»). Text (Math.round ((новая дата - начало) / 1000, 0) + «Секунды»); – Arun Banik 13 April 2015 в 06:49

Как насчет лучшего из обоих миров? Я сочетал ответ с форматом OP.

  function pretty_time_string (num) {return (num & lt; 10? "0": "") + num;  } var start = new Date;  setInterval (function () {var total_seconds = (новая дата - начало) / 1000; var hours = Math.floor (total_seconds / 3600); total_seconds = total_seconds% 3600; var minutes = Math.floor (total_seconds / 60); total_seconds =  total_seconds% 60; var seconds = Math.floor (total_seconds); hours = pretty_time_string (hours); minutes = pretty_time_string (minutes); seconds = pretty_time_string (seconds); var currentTimeString = hours + ":" + minutes + ":" +  секунд, $ ('. timer'). text (currentTimeString);}, 1000);   
9
ответ дан Brutnus 16 August 2018 в 04:58
поделиться
  • 1
    В этом подходе вам нужно чаще обновлять текст, потому что из-за отклонений в таймингах срабатывания обратного вызова два последовательных вызова могут закончиться в одну секунду, и вы будете прыгать секунд на дисплее. Я использую интервал обновления 100 мс, чтобы быть в безопасности. – jamix 21 May 2014 в 17:34
  • 2
    Кажется, ответы были объединены в другой поток и не отвечают на этот вопрос напрямую. В моем ответе я взял оригинальную функцию и изменил ее простую копию и вставку. – Brutnus 22 May 2014 в 18:36

setInterval, как было предложено SLaks, было именно тем, что мне нужно для создания моего таймера. (Спасибо mate!)

Используя setInterval и эту замечательную запись в блоге Я закончил создание следующей функции для отображения таймера внутри моего div box. Я надеюсь, что это поможет кому-то еще с похожими требованиями!

  function get_elapsed_time_string (total_seconds) {function pretty_time_string (num) {return (num & lt; 10? "0": "") + num;  } var hours = Math.floor (total_seconds / 3600);  total_seconds = total_seconds% 3600;  var minutes = Math.floor (total_seconds / 60);  total_seconds = total_seconds% 60;  var seconds = Math.floor (total_seconds);  // Поместите минуты и секунды с ведущими нулями, если требуется часы = pretty_time_string (часы);  minutes = pretty_time_string (минуты);  seconds = pretty_time_string (секунды);  // Составляем строку для отображения var currentTimeString = hours + ":" + minutes + ":" + seconds;  return currentTimeString;  } var elapsed_seconds = 0;  setInterval (function () {elapsed_seconds = elapsed_seconds + 1; $ ('# box_header'). text (get_elapsed_time_string (elapsed_seconds));}, 1000);   
36
ответ дан Ganesh Shankar 16 August 2018 в 04:58
поделиться
  • 1
    Эй, не верьте, что функция будет работать ровно каждые 1000 миллисекунд, вы выйдете из синхронизации. Вам нужно сохранить дату начала и рассчитать разницу каждый раз, как показано в принятом ответе на этот вопрос – jvanderh 25 May 2012 в 00:38
  • 2
    @jvanderh. В этом случае интервал должен быть сокращен до 100 мс или 250 мс, потому что в противном случае может произойти второй прыжок (10, 11, 12, 14, 15 ...). – jamix 21 May 2014 в 17:32
  var eventdate = новая дата («01 января 2014 00:00:00»);  function toSt (n) {s = "" if (n & lt; 10) s + = "0" return s + n.toString ();  } function countdown () {cl = document.clock;  d = новая дата ();  кол = Math.floor ((eventdate.getTime () - d.getTime ()) / 1000);  if (count & lt; = 0) {cl.days.value = "----";  cl.hours.value = "-";  cl.mins.value = "-";  cl.secs.value = "-";  вернуть;  } cl.secs.value = toSt (count% 60);  кол = Math.floor (кол / 60);  cl.mins.value = Tost (кол-% 60);  кол = Math.floor (кол / 60);  cl.hours.value = Tost (кол-% 24);  кол = Math.floor (кол / 24);  cl.days.value = кол;  SetTimeout ( "обратный отсчет ()", 500);  }  

Здравствуйте, у меня есть аналогичное назначение, которое связано с созданием Javascript Countdown Clock. Вот код, который я использовал. Подключите вышеуказанный код между & lt; script language = "Javascript"> & lt; / script>. Имейте в виду, что просто наличие этого javascript не будет делать много, если у вас нет html для отображения часов. Я оставлю вам html. Создайте часы, как хотите.

0
ответ дан Jim Shaw 16 August 2018 в 04:58
поделиться

24 часа:

  setInterval (function () {var currentTime = new Date (); var hours = currentTime.getHours (); var minutes = currentTime.getMinutes ();  var seconds = currentTime.getSeconds (); // Добавить ведущие нули минут = (минуты & lt; 10? "0": "") + минуты, секунды = (секунды & lt; 10? "0": "") + секунды;  hours = (hours & lt; 10? "0": "") + hours; // Составить строку для отображения var currentTimeString = hours + ":" + minutes + ":" + seconds; $ (". clock").  html (currentTimeString);}, 1000);   

// 24-часовой набор часовInterval (function () {var currentTime = new Date (); var hours = currentTime.getHours (); var minutes = currentTime. getMinutes (); var seconds = currentTime.getSeconds (); // Добавить ведущие нули часов = (часы & lt; 10? "0": "") + часы; минуты = (минуты & lt; 10? "0": "" ) + минуты; секунды = (секунды & lt; 10? "0": "") + секунды; // Составить строку для отображения var currentTimeString = hours + ":" + minutes + ":" + seconds; $ (". clock "). html (currentTimeString);}, 1000); & lt; script src =" https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min .js "& GT; & Lt; & / сценарий; GT & lt; div class = "clock" & gt; & lt; / div & gt;

2
ответ дан Kurt Van den Branden 16 August 2018 в 04:58
поделиться
  ################## JQuery (используйте API) ################# $ $ (document)  .ready (function () {function getdate () {var today = new Date (); var h = today.getHours (); var m = today.getMinutes (); var s = today.getSeconds (); if (s & lt  10) {s = "0" + s;} $ ("h1"). Text (h + ":" + m + ":" + s); setTimeout (function () {getdate ()}, 500);}  $ («кнопка»). click (getdate);});  ################## HTML ###################### & lt; button & gt; start clock & lt; / button & gt;  & Lt; h1 & GT; & Lt; / h1 & GT;   
13
ответ дан Uday Hiwarale 16 August 2018 в 04:58
поделиться
  • 1
    Отлично! Простой, прямой способ отображения часов при использовании jQuery (что я и делаю). Я создал jsfiddle для всех, кто заинтересован в том, чтобы видеть это в действии. Проверьте это здесь ... jsfiddle.net/smallworld/ng22Y/1 – smallworld 23 March 2014 в 23:51
  var timeInterval = 5;  var blinkTime = 1;  var open_signal = 'top_left';  $ (document) .ready (function () {$ ('# div_top_left .timer'). html (timeInterval); $ ('# div_top_right .timer'). html (timeInterval); $ ('# div_bottom_right .timer')  .html (timeInterval * 2); $ ('# div_bottom_left .timer'). html (timeInterval * 3); $ ('# div_top_left .green'). css ('background-color', 'green'); $ (  '#div_top_right .red'). css ('background-color', 'red'); $ ('# div_bottom_right .red'). css ('background-color', 'red'); $ ('# div_bottom_left.  красный '). css (' background-color ',' red '), setInterval (function () {manageSignals ();}, 1000);});  function manageSignals () {var top_left_time = parseInt ($ ('# div_top_left .timer'). html ()) - 1;  var top_right_time = parseInt ($ ('# div_top_right .timer'). html ()) - 1;  var bottom_left_time = parseInt ($ ('# div_bottom_left .timer'). html ()) - 1;  var bottom_right_time = parseInt ($ ('# div_bottom_right .timer'). html ()) - 1;  if (top_left_time == -1 & amp; & amp; open_signal == 'top_left') open_signal = 'top_right';  else if (top_right_time == -1 & amp; & amp; open_signal == 'top_right') open_signal = 'bottom_right';  else if (bottom_right_time == -1 & amp; & open_signal == 'bottom_right') open_signal = 'bottom_left';  else if (bottom_left_time == -1 & amp; & open_signal == 'bottom_left') open_signal = 'top_left';  if (top_left_time == -1) {if (open_signal == 'top_right') {top_left_time = (timeInterval * 3) - 1;  $ ('# div_top_left .red'). css ('background-color', 'red');  $ ('# div_top_left .yellow'). css ('background-color', 'white');  $ ('# div_top_left .green'). css ('background-color', 'white');  } else if (open_signal == 'top_left') {top_left_time = timeInterval - 1;  $ ('# div_top_left .red'). css ('background-color', 'white');  $ ('# div_top_left .yellow'). css ('background-color', 'white');  $ ('# div_top_left .green'). css ('background-color', 'green');  }} if (top_right_time == -1) {if (open_signal == 'bottom_right') {top_right_time = (timeInterval * 3) - 1;  $ ('# div_top_right .red'). css ('background-color', 'red');  $ ('# div_top_right .yellow'). css ('background-color', 'white');  $ ('# div_top_right .green'). css ('background-color', 'white');  } else if (open_signal == 'top_right') {top_right_time = timeInterval - 1;  $ ('# div_top_right .red'). css ('background-color', 'white');  $ ('# div_top_right .yellow'). css ('background-color', 'white');  $ ('# div_top_right .green'). css ('background-color', 'green');  }} if (bottom_right_time == -1) {if (open_signal == 'bottom_left') {bottom_right_time = (timeInterval * 3) - 1;  $ ('# div_bottom_right .red'). css ('background-color', 'red');  $ ('# div_bottom_right .yellow'). css ('background-color', 'white');  $ ('# div_bottom_right .green'). css ('background-color', 'white');  } else if (open_signal == 'bottom_right') {bottom_right_time = timeInterval - 1;  $ ('# div_bottom_right .red'). css ('background-color', 'white');  $ ('# div_bottom_right .yellow'). css ('background-color', 'white');  $ ('# div_bottom_right .green'). css ('background-color', 'green');  }} if (bottom_left_time == -1) {if (open_signal == 'top_left') {bottom_left_time = (timeInterval * 3) - 1;  $ ('# div_bottom_left .red'). css ('background-color', 'red');  $ ('# div_bottom_left .yellow'). css ('background-color', 'white');  $ ('# div_bottom_left .green'). css ('background-color', 'white');  } else if (open_signal == 'bottom_left') {bottom_left_time = timeInterval - 1;  $ ('# div_bottom_left .red'). css ('background-color', 'white');  $ ('# div_bottom_left .yellow'). css ('background-color', 'white');  $ ('# div_bottom_left .green'). css ('background-color', 'green');  }} if (top_left_time == blinkTime & amp; & amp; open_signal == 'top_left') {$ ('# div_top_left .yellow'). css ('background-color', 'yellow');  $ ('# div_top_left .green'). css ('background-color', 'white');  } if (top_right_time == blinkTime & amp; & amp; open_signal == 'top_right') {$ ('# div_top_right .yellow'). css ('background-color', 'yellow');  $ ('# div_top_right .green'). css ('background-color', 'white');  } if (bottom_left_time == blinkTime & amp; & amp; open_signal == 'bottom_left') {$ ('# div_bottom_left .yellow'). css ('background-color', 'yellow');  $ ('# div_bottom_left .green'). css ('background-color', 'white');  } if (bottom_right_time == blinkTime & amp; & open_signal == 'bottom_right') {$ ('# div_bottom_right .yellow'). css ('background-color', 'yellow');  $ ('# div_bottom_right .green'). css ('background-color', 'white');  } $ ('# div_top_left .timer'). html (top_left_time);  $ ('# div_top_right .timer'). html (top_right_time);  $ ('# div_bottom_left .timer'). html (bottom_left_time);  $ ('# div_bottom_right .timer'). html (bottom_right_time);  }  
0
ответ дан user3448924 16 August 2018 в 04:58
поделиться

Если вы можете использовать jQuery с Moment.js (отличная библиотека), это способ:

  var crClockInit1 = null;  var crClockInterval = null;  function crInitClock () {crClockInit1 = setInterval (function () {if (moment (). format ("SSS") & lt; = 40) {clearInterval (crClockInit1); crStartClockNow ();}}, 30);  } function crStartClockNow () {crClockInterval = setInterval (function () {$ ('# clock'). html (момент (). format ('D. MMMM YYYY H: mm: ss'));}, 1000);  }  

Начать инициализацию синхронизации с помощью crInitClock () . Это делается для синхронизации секунд. Без синхронизации вы начнете 1 секунду таймера через половину секунды, и он будет на полсекунды позже, чем в реальном времени.

2
ответ дан Xdg 16 August 2018 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: