Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Визуальное уменьшение числа (https://javascript.ru/forum/misc/57077-vizualnoe-umenshenie-chisla.html)

AntonMs 18.07.2015 03:07

Визуальное уменьшение числа
 
Есть число 1000, и нужно что-бы оно визуально уменьшилось до 500, типа как в таймере мс.
Звучит просто, но Я почему-то не могу решить, помогите пожалуйста.

Lemme 18.07.2015 08:54

http://jsfiddle.net/qvyuLhn9/ ?

Palama 18.07.2015 09:38

или
place = getElementById("counter");
start = 1000;
stop = 500;
function timer() {
    if (start-- > stop) {
    place.innerHTML = start;
    setTimeout(timer,10);
    }
}
timer();

Lemme 18.07.2015 10:15

Palama, рекурсия,конечно, хорошо, но что, если я захочу сделать так
timer(document.geElementById('counter'), 1000, 500);

p.s открыл твой профиль - уже появился единомышленник=), точнее кто-то сказал это другими словами=)

join 18.07.2015 12:48

Цитата:

Сообщение от Lemme
http://jsfiddle.net/qvyuLhn9/ ?

если я захочу поменять счетчик с 1 до 100 то ваш пример начинает врать:
http://jsfiddle.net/qvyuLhn9/17/

AntonMs 18.07.2015 13:01

Lemme Спасибо, скопипастил)

Lemme 18.07.2015 13:13

join, спасибо за замечание, проглядел ;) Ведь
from-=1 === --from;


AntonMs, отредактируй.
if (from === to){
    clearInterval(timer);
    return;
}

AntonMs 18.07.2015 13:39

Lemme, если с return то итоговое число будет всегда на 1 больше.

Lemme 18.07.2015 13:44

AntonMs, с return
from--;
container.innerHTML = from;

или
container.innerHTML = --from;

или
container.innerHTML = from-=1


Для понимания
var i = 1;
console.log(i--); // 1 - выводим значение переменной i, а потом уменьшаем
сonsole.log(i); // 0

var i = 1;
console.log(--i); // 0 - уменьшаем значение переменной i, а потом выводим. Тоже самое, что i-=1
сonsole.log(i); // 0

AntonMs 18.07.2015 14:03

Спасибо, а то Я сначала не понял что это: --from

Или какая разница -
from--;
container.innerHTML = from;
////
container.innerHTML = from--;

Lemme 18.07.2015 14:08

AntonMs, не за что=)

Palama 18.07.2015 15:52

Цитата:

Сообщение от Lemme (Сообщение 380244)
Palama, рекурсия,конечно, хорошо, но что, если я захочу сделать так
timer(document.geElementById('counter'), 1000, 500);

тогда заклинание :)
var timer = function(e,a,b,step,delay) {
    var q = function() {if (Math.abs(a-b)>=Math.abs(step)) e.innerHTML=(setTimeout(q,delay),a=a+step);}
    q();
}
timer(document.geElementById('counter'),1000,500,-1,1);

Lemme 18.07.2015 16:04

действительно заклинание +)

рони 18.07.2015 17:06

таймер для анимации чисел
 
:write:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .test{
    background-color: rgb(51, 153, 0);
    color: rgb(102, 255, 255);
  }

  </style>
</head>

<body>
  <span class="time"></span>
  <script>
function timer(a) {
    var c = performance.now();
    requestAnimationFrame(function d(b) {
        b = (b - c) / a.duration;
        1 < b && (b = 1);
        a.elem.innerHTML = a.from + (a.to - a.from) * b | 0;
        b == 1 && a.callback && a.callback();
        1 > b && requestAnimationFrame(d)
    })
};
var span = document.querySelector('.time');
timer({
        from : 1000,
        to : 500,
        duration: 5 *1000,
        elem : span,
        callback : function() { span.classList.add('test')}
    })
</script>
</body>
</html>

Lemme 18.07.2015 17:14

рони, круто, не лень было?=)

рони 18.07.2015 17:21

Цитата:

Сообщение от Lemme
не лень было?=)

просто добавил пару параметров
сюда

kostyanet 19.07.2015 09:48

В этом его кредо: брать у богатых и давать бедным :) Однако не всем джобсам удается на этом разбогатеть.


Часовой пояс GMT +3, время: 12:59.