Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает getElementById 
V
    Опции темы
LuLok
  Дата 16.9.2008, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 6.2.2007
Где: Москва

Репутация: нет
Всего: 1



Есть код:
Код

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <head>
        <script type="text/javascript" src="../scripts/calendar.js"></script>
        <script type="text/javascript" src="../styles/calendar/lang/calendar-ru_win_.js"></script>
        <script type="text/javascript" src="../scripts/calendar-setup.js"></script>
        <script type="text/javascript">
            /**Парсит дату в формате yyyy-mm-dd
             *param date дата в требуемом формате
             *return отформатированную дату в миллисекуднах*/
            function parseDate(date) {
                var regexp = /(.*)-(.*)-(.*)/i;
                var array = date.match(regexp);
                var y = array[1];
                var m = array[2];
                var d = array[3];
                return Date.UTC(y, m, d, 0, 0, 0, 0);
            }
            /**Возвращает сегодняшнюю дату в формате yyyy-mm-dd*/
            function getTodayDateInFormat() {
                var date = new Date();
                var y = date.getFullYear();
                var m = date.getMonth() + 1;
                var d = date.getDate();
                var str = y.toString() + "-" + m.toString() + "-" + d.toString();
                return str;
            }
            /**Возвращает сегодняшнюю дату в миллисекундах*/
            function getTodayDateInMillis() {
                var date = new Date();
                var y = date.getFullYear();
                var m = date.getMonth();
                var d = date.getDate();
                return Date.UTC(y, m, d, 0, 0, 0, 0);
            }
            /**Парсит URL, извлекает из него значение начальной даты и возвращает ее в миллисекундах*/
            function getStartDate() {
                var url = document.URL;
                var regexp = /d1=(.*)&/i;
                var array = url.match(regexp);
                if(array != null) {
                    window.document.getElementById("ttt").value = array[1].toString();
                    return parseDate(array[1]);
                } else {
                    window.document.getElementById("ttt").value = getTodayDateInFormat();
                    return getTodayDateInMillis();
                }
            }
            /**Парсит URL, извлекает из него значение конечной даты и возвращает ее в миллисекундах*/
            function getEndDate() {
                var url = document.URL;
                var regexp = /d2=(.*)/i;
                var array = url.match(regexp);
                if(array != null) {
                    window.document.getElementById("ttt2").value = array[1].toString();
                    return parseDate(array[1]);
                } else {
                    window.document.getElementById("ttt2").value = getTodayDateInFormat();
                    return getTodayDateInMillis();
                }
            }
        </script>
        <link rel="stylesheet" type="text/css" media="all" href="../styles/skins/calendar-blue2.css" />
    </head>
    <body>
        <div style="font-family:arial;font-size:11px;">Начиная с:</div>
        <div id="calendar-container">
            <script type="text/javascript">
                function dateChanged(calendar) {
                    // Beware that this function is called even if the end-user only
                    // changed the month/year.  In order to determine if a date was
                    // clicked you can use the dateClicked property of the calendar:
                    if (calendar.dateClicked) {
                        // OK, a date was clicked, redirect to /yyyy/mm/dd/index.php
                        var y = calendar.date.getFullYear();
                        var m = calendar.date.getMonth() + 1;     // integer, 0..11
                        var d = calendar.date.getDate();      // integer, 1..31
                        // redirect...
                        window.document.getElementById("ttt").value = y + "-" + m + "-" + d;
                    }
                };

                Calendar.setup(
                {
                    ifdate : "%Y-%m-%d",
                    flat         : "calendar-container", // ID of the parent element
                    flatCallback : dateChanged,           // our callback function
                    firstDay : 1,                       //first day is monday
                    date : getStartDate()
                }
            );
            </script>
        </div><br />
        <div style="font-family:arial;font-size:11px;">Заканчивая:</div>
        <div id="calendar-container_2">
            <script type="text/javascript">
                function dateChanged(calendar) {
                    // Beware that this function is called even if the end-user only
                    // changed the month/year.  In order to determine if a date was
                    // clicked you can use the dateClicked property of the calendar:
                    if (calendar.dateClicked) {
                        // OK, a date was clicked, redirect to /yyyy/mm/dd/index.php
                        var y = calendar.date.getFullYear();
                        var m = calendar.date.getMonth() + 1;     // integer, 0..11
                        var d = calendar.date.getDate();      // integer, 1..31
                        // redirect...
                        window.document.getElementById("ttt2").value = y + "-" + m + "-" + d;
                    }
                };

                Calendar.setup(
                {
                    ifdate : "%Y-%m-%d",
                    flat         : "calendar-container_2", // ID of the parent element
                    flatCallback : dateChanged,           // our callback function
                    firstDay : 1,                          //first day is monday
                    date: getEndDate()
                }
            );
            </script>
        </div>
        <form>
            <input type="hidden" name="date" id="ttt" value="" />
            <input type="hidden" name="date_2" id="ttt2" value="" />
        </form>
    </body>
</html>


при загрузке страницы мне выдается ошибка:
Код

Uncaught TypeError: Cannot set property 'value' of null file:///C:/Users/../web/zones/calendar.html (line 44)
Uncaught TypeError: Cannot set property 'value' of null file:///C:/Users/../web/zones/calendar.html (line 57)


Это происходит во всех браузерах (Мозила, ИЕ, Хром).. Помогите понять в чем проблема! Спасибо! smile 

PM MAIL ICQ   Вверх
LuLok
Дата 16.9.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 6.2.2007
Где: Москва

Репутация: нет
Всего: 1



Проблему решил переместив строки 121-124 в начало тэга body.. Может ктонибудь объяснить почему так происходит???
PM MAIL ICQ   Вверх
whyte
Дата 16.9.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Это происходит потому, что код javascript начинает выполнятся со строки 81, когда объекты с id=ttt и id=ttt2 еще не созданы.
PM MAIL   Вверх
LuLok
Дата 16.9.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 6.2.2007
Где: Москва

Репутация: нет
Всего: 1



Я так и думал, хотя это и странно конечно. Все равно спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0709 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.