Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2015, 11:18
Интересующийся
Отправить личное сообщение для serhioses Посмотреть профиль Найти все сообщения от serhioses
 
Регистрация: 17.02.2015
Сообщений: 12

Помогите разобраться с конструктором
Нужно написать функцию-конструктор, которая выводит текущее время. Вначале должен отображаться режим "short" - часы и минуты. По левому клику - режим "full" - часы, минуты и секунды. По правому клику с режима "short" или "full" на режим "date" - год, день и месяц? и с режима "date" в режим "short". Но у меня не отображается время, а выводит undefined. Не могу разобраться.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="clock.css">
        <script type="text/javascript" src="test3.js"></script>
        <title>Timer</title>
    </head>
    <body>
        <div></div>
    </body>
</html>



window.addEventListener('load', function () {
    var timePlace = document.querySelector('div'),
    mode = 'short';

    function RefreshTime (el) {
        this.dateAndTime = new Date();
        this.year = this.dateAndTime.getFullYear();
        this.month = this.dateAndTime.getMonth();
        this.day = this.dateAndTime.getDay();
        this.hours = this.dateAndTime.getHours();
        this.minutes = this.dateAndTime.getMinutes();
        this.seconds = this.dateAndTime.getSeconds();

        this.addZero = function (number) {
            return (number < 10)? '0' + number: number;
        };

        this.shortTimerMode = this.addZero(this.hours) + ':' + this.addZero(this.minutes);
        this.fullTimerMode = this.addZero(this.hours) + ':' + this.addZero(this.minutes) + ':' + this.addZero(this.seconds);
        this.dateTimerMode = this.addZero(this.month) + '/' + this.addZero(this.day) + '/' + this.year;

        el.innerHTML = this.shortTimerMode;

        this.checkMode = function () {
            if (mode === 'short') {
            el.innerHTML = this.shortTimerMode;
        } else if (mode === 'full') {
            el.innerHTML = this.fullTimerMode;
        } else {
            el.innerHTML = this.dateTimerMode;
        }
        };

        this.switchToFull = function () {
            if (mode === 'short') {
            mode = 'full';
        } else {
            mode = 'short';
        }
        this.checkMode;
        };

        this.switchToDate = function (e) {
            if (mode === 'date') {
            mode = 'short';
        } else {
            mode = 'date';
        }
        this.checkMode;
        e.preventDefault();
        };

        el.addEventListener('click', this.switchToFull, false);
        el.addEventListener('contextmenu', this.switchToDate, false);

        setTimeout(this.checkMode, 1000);

        return this;
    }

    var clock = new RefreshTime(timePlace);

});

Последний раз редактировалось serhioses, 17.02.2015 в 11:54.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2015, 11:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

serhioses,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с this uroboros7 jQuery 4 02.01.2015 00:56
Помогите разобраться с калькулятором Maksim858 Ваши сайты и скрипты 1 27.12.2014 13:23
Помогите разобраться с конструктором.. reghak Ваши сайты и скрипты 2 19.04.2014 18:07
Получение ответа сервера через iframe и xhr. Помогите разобраться. Arconas AJAX и COMET 0 26.02.2013 10:38
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44