Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не запускается таймер (https://javascript.ru/forum/dom-window/56859-ne-zapuskaetsya-tajjmer.html)

VERDANT 07.07.2015 11:25

Не запускается таймер
 
<button onclick = "startTimer()">Старт</button>
<span id="mT">00:00:10</span>
<script>
function startTimer () {
t = setInterval (function() {
var s = document.getElementById ('mT'),
f = function (x) {
return (x / 100).toFixed (2).substr (2)
},
d = ':',
y = s.innerHTML.split (d),
z = --y [2] + y [0] * 3.6e3 + y [1] * 60;

if (!z) clearInterval (t);
s.innerHTML = [
f (Math.floor (z / 3600)),
f (Math.floor (z % 3600 / 60)),
f (z % 3600 % 60)
].join (d);
}, 1000);
<script>

Leon-on12 07.07.2015 12:17

Ты будешь по каждому поводу создавать тему?

<button onclick = "startStopTimer()">Старт/Стоп</button>

var a = 3670;   // Время в секундах.
var t = 1;
var check = 0;
var ch;
var mn;
var sc;
function startStopTimer(){
    if (check == 0){
        t = 1;
        check = 1;
        timer();
    }
    if (check == 1){
        t = 0;
        check = 0;
    }
}
function timer(){
    if (a==0){t=0;}
    if(t==1){
        a=a-1;
        ch = Math.floor(a/60/60);   //часы
        mn = Math.floor(a/60-ch*60);    //минуты
        sc = a%60;      //секунды
        document.getElementById ('mT').innerHTML = (ch+":"+mn+":"+sc);
     
        setTimeout('timer()',1000);
    }
}


Вот тебе мой, куда более простой и понятный таймер.
Кстати написанный тебе в буквально 2 часа назад созданной теме.
Здесь не двач, тут скорость постинга немного меньше.
Тут не б, если обратишь внимание, то все три твоих темы про таймер до сих пор висят на нулевой. Не торопись ты так. Спокойнее. Терпение, и тебе обязательно помогут. =-)

VERDANT 07.07.2015 12:23

Я нашёл таймер. Но когда запускаешь второй раз он некорректно работает.


<button onclick = "startTimer()">Старт</button>
<span id="mT">00:00:10</span>
<script>
function startTimer () {
t = setInterval (function() {
var s = document.getElementById ('mT'),
f = function (x) {
return (x / 100).toFixed (2).substr (2);
},
d = ':',
y = s.innerHTML.split (d),
z = --y [2] + y [0] * 3.6e3 + y [1] * 60;

if (!z) clearInterval (t);
s.innerHTML = [
f (Math.floor (z / 3600)),
f (Math.floor (z % 3600 / 60)),
f (z % 3600 % 60)
].join (d);
}, 1000);
}
</script>

kostyanet 07.07.2015 16:29

Цитата:

Сообщение от Leon-on12
Здесь не двач

Но вы усердно его тут создаете таскаясь за убогими: извольте плюнуть, мы подотрем.

kostyanet 07.07.2015 16:31

Цитата:

Сообщение от Leon-on12
Вот тебе мой, куда более простой и понятный таймер.

Это не таймер, это кусок какого-то кода без начала и конца. Вы бы сперва сами азы освоили чтоб убогим про буки рассказать.

Blondinka 09.07.2015 10:19

Цитата:

Это не таймер, это кусок какого-то кода без начала и конца.
kostyanet, мой код выглядит ничуть не лучше. Как сделать так, чтоб код Leon-on-а был похож на таймер, в вашем понимании?

Safort 09.07.2015 12:04

VERDANT,
что-то дофига тем ты создал. Пиши какие две темы удалить ибо тут тебе не мусорка.

kostyanet 09.07.2015 12:29

Цитата:

Сообщение от Blondinka
чтоб код Leon-on-а был похож на таймер

Вы сами-то видели таймеры? Ну такие круглые, со стрелками, кнопками, на шнурке, в руке удобно лежат, приятная во всех отношениях вещь, продуманная. Теперь надо сделать такую же, но в метафоре. Вот и все.

Blondinka 09.07.2015 12:39

kostyanet, конечно, видела. Речь идёт не о стилях. Мне интересно, как должен выглядеть js-код таймера, чтоб он был похож на таймер, в вашем понимании.

kostyanet 09.07.2015 12:43

Речь идет не о стилях. Мне интересно, вы понимаете что такое метафора таймера в программировании? Стили показали что нет, не понимаете. Так вот в программировании программа таймера должна быть такой же годной к употреблению вещью как настоящий таймер с кнопочками. Например рабочий стол Винды достаточно понятная метафора рабочего стола из дерева? Или метафора фотолаборатории - Фотошоп. Или метафора киностудии - Сони Вегас. Или метафора офиса - МС Офис и так далее...

Для начала у таймера должен быть корпус внутри которого спрятан тонкий механизм. В программировании корпусом может быть функция или объект. Вы видите корпус в тех кодах? Я не вижу. Я вижу кучу запчастей из которых на пружинке болтается кнопка старт.

kostyanet 09.07.2015 13:12

http://stackoverflow.com/questions/2...ountdown-timer

Leon-on12 09.07.2015 15:25

kostyanet,
В своеё оправдание скажу лишь что писал максимально просто, что бы человек с нулевыми знаниями мог разобраться. А потом костыли лепил, так как основа таймера уже была написана.

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

С другой стороны глупо давать начинающему часовщику собранный хублот с учтенными високосными годами в календаре, а потом удивляться почему он не может собрать простого секундомера.

И не стоит строить из себя знатока с умным видом. Возможно ты и хороший программист, но не стоит кидаться терминами значение которых ты не знаешь или не понимаешь. Метафора, это несколько не то что ты сказал. Я бы сказал что описанное тобой это аналогия.

Твоё высказывание очередной раз преподносит тебя с не очень хорошей стороны. Заметны твои попытки казаться умней, чем есть на самом деле. Или же считаешь себя умней чем есть на самом деле. И если в некоторых моментах связанных с js это так, в виду простоты вопросов и малой компетентности обсуждающих, то в остальном ты немного недотягиваешь до уровня к которому себя причисляешь.


В одном минусе к какому-то твоему посту было очень чётко написано: "Если знаешь и не влом - помоги. Если не знаешь - промолчи. Форумы для того и существуют, чтобы менее умные спрашивали, а более умные помогали. А обсирать задающего - гнилой показатель отвечающего"
Вспоминай по чаще эти слова. И не старайся возвыситься над каждым, на чей пост ты отвечаешь. А пиши конкретно что и где не так, без пафоса и претензией на свою гениальность.

kostyanet 09.07.2015 15:50

Цитата:

Сообщение от Leon-on12
что бы человек с нулевыми знаниями мог разобраться

Да вы уже за***ли с вылизыванием задниц человекам с нулевыми знаниями.

Объясняю еще раз:

когда вы нагибаетесь до его уровня - на его уровне ничего нового не возникает, а на вашем уровне закрепляется поза "раком".

когда вы остаетесь на своем уровне - он будет вынужден тянуться к этому уровню и дотянется если надо, ибо на то форумы и существуют. В итоге он поднял уровень и ваш уровень непоколебим остался.

Так понятно или еще раз объяснять реакционность и порочность потакания дуракам?

kostyanet 09.07.2015 15:54

Пожалуйста. Вы можете подумать это хорошо - нагибаться до него. А на самом деле - плохо. Тем самым вы говорите в сторону: он же дебил, никогда не поймет ничего если я на своем уровне ему объяснять начну. То есть начав объяснять человеку как дураку - вы его и называете дураком в сущности. Но главное что начав так объяснять и показывать - вы ничего умного ему не передадите. Так и оставите дурнем, в вашей терминологии - новичком.

KosBeg 09.07.2015 15:55

kostyanet,
надо будет твой комент себе на стенку повесить :D
и это не шутка, потому что смысл в этом есть :dance:

kostyanet 09.07.2015 15:56

Конечно может быть и такой вариант что вы сами ничерта не понимаете и поэтому вам деваться некуда - только дурачкам и объяснять на пальцах.

ЗЫ это было Леону

Блин, да это же самоочевидно - что между спецами и вообще между взрослыми людями всегда царит пиринг. Если я начну кому-то как дятлу объяснять или за него писать - значит я так и думаю про него - дятел. А если как обычно начну - значит думаю: он же не идиот - поймет, а что не поймет - задаст вопрос и получит ответ. Все просто.

рони 09.07.2015 16:36

таймер с callback в минималистическом стиле
 
:)
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .test{
    background-color: rgb(51, 153, 0);
    color: rgb(102, 255, 255);
  }

  </style>
</head>

<body>
  <span id="time"></span>
  <script>
function timer(a) {
    var e = performance.now();
    requestAnimationFrame(function f(b) {
        b -=  e ;
        b > a.duration && (b = a.duration);
        var c = b / 1000,
            d = c % 60 | 0,
            c = c / 60 | 0;
        a.elem.innerHTML = (9 < c ? "" : "0") + c + ":" + ((9 < d ? "" : "0") + d);
        b == a.duration && a.callback && a.callback();
        b < a.duration && requestAnimationFrame(f)
    })
};
var span = document.querySelector('#time');
timer({
        duration: 5 *1000,
        elem : span,
        callback : function() { span.classList.add('test')}
    })
</script>
</body>
</html>


Часовой пояс GMT +3, время: 16:53.