помогите новичку с функцией 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, время: 09:41. |