помогите новичку с функцией setInterval
В общем есть такой код:
<span class="target" data-start="0" data-end="8000000000" data-interval="1000" data-timer="1010"></span>
$(document).ready(function(){
$('.target').each(function(){
var timer = $(this).attr('data-timer');
setInterval(Calc(this), timer);
});
function Calc(input){
var Target = $(input);
var startValue = Number(Target.attr('data-start'));
var endValue = Number(Target.attr('data-end'));
var interval = Number(Target.attr('data-interval'));
var progress = startValue;
if (startValue < endValue) {
var progress = startValue + interval;
Target.attr('data-start', progress);
Target.html(progress);
}
}
});
Подскажите плиз, почему функция вызывается только один раз? Спасибо! |
потому что у тебя в setInterval первым аргументом попадает undefined. setInterval принимает в качестве первого аргумента функцию, а не ее вызов. можешь попробовать переписать так
function Calc(input){return function(){твой код}}
возможнол есть другие ошибки. Но причина -- в этом |
Спасибо, работает )
|
setInterval(Calc.bind(0, this), timer); |
таймеры через data
:write:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('.target').each(function(){
var Target = $(this);
var duration = Target.data('duration');
var startValue = Target.data('start');
Target.html(startValue);
var f = Calc.bind(this);
Target.timer = setInterval(f, duration);
});
function Calc(){
var Target = $(this);
var startValue = Target.data('start');
var endValue = Target.data('end');
var step = Target.data('step');
startValue += step;
if (startValue < endValue) {
Target.data('start', startValue);
}
else {
window.clearInterval(Target.timer);
startValue = endValue
};
Target.html(startValue);
}
});
</script>
</head>
<body>
<span class="target" data-start="0" data-end="8000" data-step="1000" data-duration="1010"></span>
<span class="target" data-start="0" data-end="12" data-step="1" data-duration="1010"></span>
</body>
</html>
|
| Часовой пояс GMT +3, время: 14:48. |