Отправляет email-рассылки с помощью сервиса Sendsay

[TC] И снова JavaScript...

Vande omentaina, Tiflocomp!
Ума не приложу, почему в PHP всё так понятно и просто (по крайней
мере, объяснимо), а JavaScript вводит меня в ступор на простых
вещах!
Итак, задача: вывести текст "Последнее обновление " плюс текущая дата
в отдельном абзаце без использования document.write, что есть
нехорошо.
Я пытаюсь писать следующее:
<script>
var curDate=new Date();
var monthNames=new Array("января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря");
var day=curDate.getDate();
var month=monthNames[curDate.getMonth()];
var year=curDate.getFullYear();
var updNotify=document.getElementById("notify");
updNotify.innerText="Последнее обновление: "+day+" "+month+" "+year+" года";
</script>
</head>
<body>
<p id="notify">&nbsp;</p>

что не так? Говорит, что document.getElementById() является NULL или
не является объектом.

Ответить   Anarendil Tue, 14 Jul 2009 14:42:37 +0300 (#885016)

 

Ответы:

Доброго времени суток, уважаемая рассылка и Anarendil.

Tuesday, July 14, 2009, 2:42:37 PM, you wrote:

// объявляем функцию
function f()
{

// заменяем innerText на innerHTML, чтобы и Firefox это понял
updNotify.innerHTML="Последнее обновление: "+day+" "+month+" "+year+" года";
}

// навешиваем вызов функции на загрузку страницы
// или куда нужно
<body onLoad = "f()">

Удачи!

Ответить   Олег Tue, 14 Jul 2009 22:38:19 +0300 (#885085)

 

Vande omentaina, Олег!
Ага! Теперь ошибок не выводит, но и дату тоже не выводит:

<script>
function showDate () {
var curDate=new Date();
var monthNames=new Array("января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря");
var day=curDate.getDate();
var month=monthNames[curDate.getMonth()];
var year=curDate.getFullYear();
var updNotify=document.getElementById("notify");
updNotify.innerHtml="Последнее обновление: "+day+" "+month+" "+year+" года";
}
</script>
</head>
<body onLoad="showDate ();">
<p id="notify">&nbsp;</p>

<h3>Подготовительный этап</h3>

Что может быть не так?
Спасибо!

Ответить   Anarendil Wed, 15 Jul 2009 00:52:30 +0300 (#885140)

 

Доброго времени суток, уважаемая рассылка и Anarendil.

Wednesday, July 15, 2009, 12:52:30 AM, you wrote:

...

Метод называется не innerHtml, а innerHTML (обратите внимание на
регистр букв).
В JavaScript играет роль регистр букв в названии методов и свойств объектов.
Удачи!

Ответить   Олег Wed, 15 Jul 2009 09:49:48 +0300 (#885223)

 

Vande omentaina, Олег!

Во! Спасибо, теперь работает! Однако один мааленький вопрос: а почему
Осёл не плюнулся, что такого метода нет, если я неверно его написал?
Точнее, свойства?

Ответить   Anarendil Wed, 15 Jul 2009 18:44:56 +0300 (#885410)

 

Приветствую всех.
Андрей пишет:

Ну воспитанный парень, должно быть...
И еще потому, наверное, что читал спецификацию JavaScript :-))

Объекты JavaScript поддерживают динамическое добавление свойств и методов. Иными
словами, строка:
enemy.name= 'Terminator';

Создаст конкретно у объекта enemy указанное свойство, если оно отсутствует, и
присвоит ему значение, указанное в кавычках. Поскольку элементы HTML, включенные
в DOM, представлены в JavaScript как объекты (т.е. унаследованы от Object), то
все вышесказанное справедливо и для них.
Следовательно, та строка, которую вы считаете ошибочной, с точки зрения JavaScript,
ошибочной не является.
Кстати, все это позволяет вам реализовать замену месяца на русское название
не как отдельную функцию в глобальном пространстве, а как метод вашего экземпляра
Date().
Разумеется, этим возможности JavaScript в плане ООП не исчерпываются.

Успехов. Анатолий.

Ответить   "i_chay" Thu, 16 Jul 2009 09:42:08 +0500 (#885537)

 

Доброго времени суток, Anarendil.

Wednesday, July 15, 2009, 6:44:56 PM, you wrote:

Загадочна и непостижима логика работы продукции Мелкомягких. :-)
А если серьезно, то без понятия! Может, ошибки связанные с регистром
букв как ошибки не идентифицируются, а проверяется только правильность
написания?

Ответить   Олег Thu, 16 Jul 2009 10:03:23 +0300 (#885596)