Рассчитывать на цель с помощью JavaScript


Я ищу (и быть такой же жестокой, как вам нравится) способов улучшить код или алгоритм (я в курсе, там должны быть комментарии) - я быстро восстанавливаюсь программист и хотел бы улучшить свои навыки. Мой следующий шаг-это получить targetNumber значение из соседнего файла без потери текущего графа.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
  <title>Count to a particular target</title> 
</head> 
<body> 
<h1 id="myDiv">Starting</h1> 
<script type="text/javascript">
    currentValue = 100;
    targetValue = 1500;

    function count() {
        if (currentValue > targetValue) {
        currentValue -= 1
        } else if (currentValue < targetValue) {
            currentValue += 1
        } 
        document.getElementById('myDiv').innerHTML = 'Total wordcount:'+ currentValue.toString();
        changeTime = 20;
        if (Math.abs(currentValue - targetValue) < 980) {
            changeTime = 1000 - Math.abs(currentValue - targetValue);
        }
        setTimeout(count,changeTime/2);
    }
count()
</script> 
</body> 
</html> 


1329
5
задан 27 мая 2011 в 11:05 Источник Поделиться
Комментарии
1 ответ

function count(from, to, targetElem) {
targetElem.innerHTML = 'Total wordcount: ' + from;

if (from == to) return;

from < to ? from++ : from--;

var changeTime = Math.max(20, 1000 - Math.abs(from - to)) / 2;

setTimeout(function() {count(from, to, target);}, changeTime);
}

count(50, 0, document.getElementById("t"));

Несколько заметок:


  • избегайте глобальных переменных, чтобы сохранить государство, - вместо того, чтобы использовать аргументы функции

  • всегда используйте ВАР объявлять переменные. В противном случае они находятся в глобальной области видимости, и вы не хотите этого

  • добавлены проверки на ошибки (т. е. значения числовых и цели действителен) может не быть плохой идеей, я оставил его для наглядности здесь

  • вернуться рано на известных условиях, это снижает сложность в теле функции

  • тернарный оператор условия ? еслиистина : еслиложь могут быть использованы другими способами, чем присвоить значение

4
ответ дан 28 мая 2011 в 10:05 Источник Поделиться