Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Отчёт времени к определённой дате


Автор: ressac 2.2.2008, 18:37
Код

<html>

    <head>

    <script language="JavaScript">

    one_day=1000*60*60*24;
    d1=new Date(2008,3,1);
    var str="";

    function timer()

    {
        d2=new Date();

        str= "weeks: " + Math.ceil( (d1.getTime()-d2.getTime())/ (one_day*7)) + "<br><br>";
        document.getElementById('week').innerHTML=str;


        str= " days: " + Math.ceil( (d1.getTime()-d2.getTime())/ (one_day)) + "<br><br>";
        document.getElementById('days').innerHTML=str;

        str= " hours: " + Math.ceil( (d1.getTime()-d2.getTime())/ (one_day/24)) + "<br><br>";
        document.getElementById('hours').innerHTML=str;

        str= " Min: " + Math.ceil( (d1.getTime()-d2.getTime())/ (one_day/24/60)) + "<br><br>";
        document.getElementById('min').innerHTML=str;

        str= " Sec: " + Math.ceil( (d1.getTime()-d2.getTime())/ (one_day/24/60/60)) + "<br><br>";
        document.getElementById('sec').innerHTML=str;

            setTimeout("timer()",1000);
    }


    </script>

    </head>    
    <body onLoad="timer()">
    <div id='week'></div>
    <div id='days'></div>
    <div id='hours'></div>
    <div id='min'></div>
    <div id='sec'></div>
    </body>

</html>


можно как-то упростить код?

Автор: AKS 2.2.2008, 20:01
Цитата(ressac @  2.2.2008,  18:37 Найти цитируемый пост)
можно как-то упростить код? 

Можно начать вот с этого:
Код

var diff = d1.getTime() - d2.getTime();

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

Автор: smartov 2.2.2008, 20:53
Еще можно заблаговременно сохранить сколько осталось ждать в днях например в переменку days
тогда то, сколько осталось в неделях будет days/7, а в часах - days*24

Еще: вместо установки setTimeout функции на саму себя лучше использовать функцию setInterval

Автор: ksnk 2.2.2008, 22:10
Первая мысль, которая у меня появилась всвязи с этим кодом - он совершенен в своем уродстве... и никакие изменения не добавят совершенства... smile 
так что - переписать напрочь...
Пять почти одинаковых конструкций так и напрашиваются на то, чтобы из них изготовить функцию. ну или цикл, для любителей поизвращаться smile
Конструировать кусок html'я в JavaScript'е строковыми операциями представляется мне чем-то неприличным. Приличнее вывалить заголовки и BR'ы в html и вставлять искомые цифры в span'ы.
    <div>week:<span  id='week'></span><br/><br/></div>
 которые сидят внутри div'ов. К тому-же есть мнение, что пользоваться innerHTML настолько некошерно, что на нее отсутствует даже официальная документация.  smile 

Автор: AKS 3.2.2008, 09:50
Цитата(ksnk @  2.2.2008,  22:10 Найти цитируемый пост)
К тому-же есть мнение, что пользоваться innerHTML настолько некошерно, что на нее отсутствует даже официальная документация.  smile  

Есть еще мнение, что такую документацию нам все же следует "подсунуть":
http://www.whatwg.org/specs/web-apps/current-work/#innerhtml0
http://www.whatwg.org/specs/web-apps/current-work/#innerhtml1
;)

Автор: ksnk 3.2.2008, 10:12
AKS, Working Dratf на HTML 5? Ну, значит есть надежда, что здравый смысл таки победит ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)