for(; iter != endIter; ) {
if (Some Condition) {
aMap.erase(iter++);
} else {
++iter;
}
}
То, что вы изначально могли бы увеличить итератор дважды, если вы удалили из него элемент; вы можете пропустить элементы, которые нужно удалить.
Это общий алгоритм, который я видел во многих местах и документировал.
[EDIT] Вы правы, что итераторы недействительны после стирания, но только итераторы, ссылающиеся на стираемый элемент, остаются в силе иными итераторами. Следовательно, используя iter ++ в вызове erase ().
Вы ищете функцию setInterval
, которая запускает функцию каждые x миллисекунды.
Например:
] var start = new Date; setInterval (function () {$ ('. Timer'). text ((новая дата - начало) / 1000 + «Секунды»);}, 1000);
Как насчет лучшего из обоих миров? Я сочетал ответ с форматом 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);
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);
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. Создайте часы, как хотите.
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;
################## 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;
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); }
Если вы можете использовать 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 секунду таймера через половину секунды, и он будет на полсекунды позже, чем в реальном времени.