Как добавить 200 мс к анимации css -длительность при нажатии jQuery

#javascript #jquery #css

#javascript #jquery #css

Вопрос:

Есть div с анимацией css

 .mydiv {
    animation: ticker 2000ms linear 0s infinite normal none running;
}
  

animation-duration Свойство установлено на 2000 мс
, и я пытаюсь изменить скорость анимации с помощью jquery
, например, добавив 200 мс к текущему значению

что-то вроде

 $( "#speedup" ).click(function() {
 var mydiv = $( ".mydiv" );
 var val = mydiv.css('animation-duration');
 $(".mydiv").css("animation-duration", val   "ms") 200;
});
  

Ответ №1:

Переменная ‘val’ не является целым числом (2s). Вы не можете умножать на это значение. Вам нужно использовать parseInt(), чтобы вернуть целое число (2).

 $('#speedup').click(function(){

       var mydiv = $( ".mydiv" );
       var val = mydiv.css('animation-duration');
       var newVal = (parseInt(val) * 1000); //parseInt(val) creates the integer 2. Multiply with 1000 to get 2000

       mydiv.css({"animation-duration" : newVal - 200   "ms"});

 });
  

Редактировать: parseFloat еще лучше. Таким образом, вы можете использовать toFixed, чтобы получить целое число с 2 десятичными знаками.

https://jsfiddle.net/qcajbtz8/

 $('#speedup').click(function(){

                var mydiv = $( ".mydiv" );
                var val = mydiv.css('animation-duration');
                var newVal = (parseFloat(val).toFixed(2) * 1000);

                mydiv.css({"animation-duration" : newVal - 200   "ms"});

            });
  

Ответ №2:

Попробуйте это.

     var val = currentvalue;
    $( "#speedup" ).click(function() {
     var mydiv = $( ".mydiv" );
     val = val   200;

     $(".mydiv").css("animation-duration", val   "ms");
    });
  

Комментарии:

1. Во-первых, вы должны получить currentvalue , вероятно, с помощью: $('.mydiv').css('animation-duration') * 1000; . Причина умножения на 1000 заключается в том, что функция по умолчанию возвращает время в секундах.

2. я не знаю, где он взял ta_Ticker, поэтому я просто упрощаю, используя currentvalue, чтобы объяснить это.

3. Ваш код идеален, но на самом деле он добавляет только 200 к текущим значениям, которые выражаются в миллисекундах, например, 2000 мс становится 2000200 мс. я признателен, если вы можете помочь 🙂

4. подсказка: используйте parseInt() функцию. Теперь вы объединяете строки.