2015-08-26 4 views
0

Мне нужна моя анимация счетчика, чтобы анимировать значение, динамически вычисленное в диапазоне по выбранным флажкам. Значения рассчитываются штрафом, однако они не оживляют. http://jsfiddle.net/dbtj93kL/Счетчик анимации к вычисленному значению

$('input[type="checkbox"]').change(function() { 
 
    var total_span = 0; 
 
    $('input[type="checkbox"]').each(function() { 
 
    if ($(this).is(':checked')) { 
 
     total_span += parseInt($(this).prop('value')); 
 
    } 
 
    }); 
 

 
    $("#usertotal").html(total_span); 
 
}); 
 

 
jQuery({ 
 
    Counter: 0 
 
}).animate({ 
 
    Counter: $('.Single').text() 
 
}, { 
 
    duration: 1000, 
 
    step: function() { 
 
    $('.Single').text(Math.ceil(this.Counter)); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type="checkbox" value="100" onclick="test(this);">1</input> 
 
<input type="checkbox" value="200" onclick="test(this);">2</input> 
 
<input type="checkbox" value="300" onclick="test(this);">3</input> 
 
<input type="checkbox" value="400" onclick="test(this);">4</input> 
 
<br /> 
 
<span id="usertotal" class="Single"> </span>

+0

Какое поведение являются вы ожидаете? Должно ли значение обновляться от 0 до заданного значения при установке флажка? – blex

+0

Привет! что именно вам нужно оживить? Вы можете быть более конкретным? –

ответ

1

Вам нужно сделать анимацию, когда флажок, а не на странице загрузки, как вы делали:

$('input[type="checkbox"]').change(function() { 
 
    var total_span = 0; 
 
    $('input[type="checkbox"]').each(function() { 
 
     total_span += this.checked && +this.value; 
 
    }); 
 
    $({counter: +$('#usertotal').text()}).animate({counter: total_span},{ 
 
     duration: 500, 
 
     step: function() { 
 
      $('#usertotal').text(Math.round(this.counter)); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<input type="checkbox" value="1">1</input> 
 
<input type="checkbox" value="2">2</input> 
 
<input type="checkbox" value="3">3</input> 
 
<input type="checkbox" value="4">4</input> 
 
<br /> 
 
<span id="usertotal"></span>

+0

это здорово! как бы я мог оживить от последнего значения, а не от 0 –

+1

@EndUser Я отредактировал свой ответ, чтобы сделать это. '$ ({counter: + $ ('# usertotal'). text()})' Обратите внимание, что знак '+' эквивалентен 'parseFloat()', он преобразует String в число. Это намного короче, чем 'parseInt()', но если вы предпочитаете 'parseInt', вы можете сохранить его. – blex

+0

это именно то, что я хотел, большое спасибо –

Смежные вопросы