2016-05-31 3 views
0

Я пытаюсь увеличивать счетчик каждый раз, но при щелчке html счетчик растет экспоненциально, как +1, +2, +3, +4.Counter Increment Экспоненциально

Gif of it happening

$('.dates').click(function(){ 
     $('#output').html(function(i, val) { return val*1+1 }); 
}); 

HTML:

<div id="output">0</div> 

Сердце анимации Код:

var rand = Math.floor(Math.random() * 100 + 1); 
    var flows = ["flowOne", "flowTwo", "flowThree"]; 
    var colors = ["colOne", "colTwo", "colThree", "colFour", "colFive", "colSix"]; 
    var timing = (Math.random() * (1.3 - 0.3) + 1.6).toFixed(1); 
    // Animate Particle 
    $('<div class="particle part-' + rand + ' ' + colors[Math.floor(Math.random() * 6)] + '" style="font-size:' + Math.floor(Math.random() * (30 - 22) + 22) + 'px;"><i class="fa fa-heart-o"></i><i class="fa fa-heart"></i></div>').appendTo('.particle-box').css({ animation: "" + flows[Math.floor(Math.random() * 3)] + " " + timing + "s linear" }); 
    $('.part-' + rand).show(); 
    // Remove Particle 
    setTimeout(function() { 
     $('.part-' + rand).remove(); 
    }, timing * 1000 - 100); 
  1. Почему увеличивающиеся в геометрической прогрессии?
  2. Как мне увеличить его на 1 раз? Как 0, 1, 2, 3, 4
+0

Можете ли вы воспроизвести это на JSFiddle? –

+0

сообщение html please –

+2

Это хорошо работает https://jsfiddle.net/v58dfs8u/ Я думаю, что вы связываете свое событие несколько раз –

ответ

0

Возможно, это рассматривается как строка. Используйте parseInt разобрать значение как целое, а не с помощью конкатенации строк:

$('.dates').click(function() { 
    $('#output').html(function(i, val) { 
    return parseInt(val, 10) + 1; 
    }); 
}); 

Рабочего фрагмент кода:

$('.dates').click(function() { 
 
    $('#output').html(function(i, val) { 
 
    return parseInt(val, 10) + 1; 
 
    }); 
 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" class="dates">Click</a> 
 
<div id="output">0</div>

+0

'val * 1' все равно введет val в число, так что это не проблема. Однако использование 'parseInt' более очевидно. – floribon

+0

Рабочий фрагмент каким-то образом блокирует код анимации сердца под ним – user3421197

+0

@ user3421197 Если вы не публикуете полный код, как бы вы ожидали от нас понимания и решения вашей проблемы? –

2

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

Проверьте и разместите код, который окружает линию $('.dates').click(...).

Убедитесь, что эта строка вызывается только один раз в вашем коде, а не позже.

+0

Yup. Это правда. –

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