С нами с 31.10.03
Сообщения: 730
Рейтинг: 336
|
Добавлено: 10/10/13 в 14:30 |
Код такой:
Код: |
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
jQuery(document).ready(function ($) {
function pad ( val ) { return val > 9 ? val : "0" + val; }
$("div#seconds").click(function(){
clearInterval(interv);
var mySec = 0;
var interv = setInterval(CountIt, 1000);
});
function CountIt(){
mySec++;
if (mySec <=15) {
$("#seconds").html(pad(mySec));
}
}
});
</script>
<div id="seconds">00</div>
|
Объясните, почему при клике не хочет запускаться интервал? Не врубаюсь я в этот яваскрипт...
Хочу чтобы при клике по диву - запускался счетчик, который доходит максимум до 15.
При повторном клике с незаконченным таймером - чтобы он запускался заново с нуля.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 10/10/13 в 14:50 |
попробуй так:
Код: |
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
jQuery(document).ready(function ($) {
function pad ( val ) { return val > 9 ? val : "0" + val; }
$("div#seconds").click(function(){
clearInterval(interv);
var mySec = 0;
var interv = setInterval(
function(){
mySec<15 ? $("#seconds").html(pad(++mySec)):''
},
1000);
});
});
</script>
<div id="seconds">00</div> |
P.S. в данном случае setInterval следует заменить на setTimeout для экономии памяти браузера
|
|
|
|
С нами с 31.10.03
Сообщения: 730
Рейтинг: 336
|
Добавлено: 11/10/13 в 08:27 |
ibiz: ну вот при первом клике он начинает считать первый каунтер до 15, а при втором - запускает новый, но при этом продолжает старый крутить тоже.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 11/10/13 в 08:46 |
MilkSucker:
Код: |
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
jQuery(document).ready(function ($) {
var interv
function pad ( val ) { return val > 9 ? val : "0" + val; }
$("div#seconds").click(function(){
clearInterval(interv);
var mySec = 0;
interv = setInterval(
function(){
mySec<15 ? $("#seconds").html(pad(++mySec)):''
},
1000);
});
});
</script>
<div id="seconds">00</div>
|
|
|
|
|
С нами с 31.10.03
Сообщения: 730
Рейтинг: 336
|
Добавлено: 11/10/13 в 10:00 |
Нагуглил такое вот, в итоге:
Код: |
var myTimer = function(){
var time = 15;
var timer;
this.set = function() {
console.log('setting up timer');
timer = setInterval(function(){
console.log('running time: ' + time);
},1000);
}
this.reset = function(){
console.log('clearing timer');
clearInterval(timer);
}
return this;
}();
|
and run when you need to:
myTimer.set(); myTimer.reset();
И при нужном клике вызываю сначала ресет, потом сет.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 11/10/13 в 12:22 |
в данной задаче вместо setInterval следует использовать setTimeout... так что лучше с ним искать решение
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 11/10/13 в 18:46 |
ibiz писал: | в данной задаче вместо setInterval следует использовать setTimeout |
Устал уже и не пойму нихуя с чего это вдруг, если вот: http://jsfiddle.net/yacc/beNdg/
|
|
|
|
+
С нами с 19.12.06
Сообщения: 129
Рейтинг: 31
|
Добавлено: 12/11/13 в 04:05 |
Рабочий код :
Код: |
<script src="jquery.js"></script>
<script>
var interv=0;
var mySec=0;
function pad(val) { return val > 9 ? val : "0" + val; }
function CountIt(){
mySec++;
if (mySec <=15) {
$("#seconds").html(pad(mySec));
}
}
$(function() {
$("div#seconds").click(function(){
clearInterval(interv);
mySec = 0;
interv = setInterval(CountIt, 1000);
});
});
</script>
<div id="seconds">00</div>
|
1. Чтобы у тебя нормально все работало, не используй загрузку с гугля файла jquery, помести к себе
2. Функции обыкновенные определяй вне document ready, вынес тебе наверх
3. Переменные чтобы определить глобальными тоже надо вынести за пределы функций на самый верх, а то у тебя действительно SetInterval зацикливался
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 12/11/13 в 07:58 |
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 12/11/13 в 10:13 |
ibiz писал: | почитай может будет интересно |
Почитал и один хуй не понял почему (цитирую тебя) "в данной задаче вместо setInterval следует использовать setTimeout"? Покажи мне сценарий в котором мой код не будет работать?
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 12/11/13 в 10:27 |
Yacc: ibiz как бы тебе говорит, что, зачем просто, если можно сложно. хоккей на костылях
ibiz писал: | для экономии памяти браузера |
есть инфа покурить? сколько, 200 байтов экономия есть? если да, то, конечно, в полнейшей заботе о 200 байтах клиента нужно юзать такие костыли.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 12/11/13 в 11:08 |
Yacc писал: | Почитал и один хуй не понял почему (цитирую тебя) "в данной задаче вместо setInterval следует использовать setTimeout"? Покажи мне сценарий в котором мой код не будет работать? |
я и не говорил что он не будет работать
|
|
|
|