Мой Firefox 1.5 не может правильно обработать следующий код:

<SCRIPT type="text/javascript">
    var today = new Date()
    var year = today.getYear()
    document.write("2004-",year,",")
</SCRIPT>

Вместо 2006 там получается каким-то образом 106. Как решить эту проблему?

я в этом не профи, но Fx сообщает скрипту число лет, прошедших с 1900 года.

Прибавить 1900, ибо метод getYear возвращает число лет прошедшее с этого самого года...

Я понял, что там с 1900, но почему так не разумно? Если ввести поправку и смотреть другими браузерами, то получится бред.

тема уже была. метод getYear считается нежелательным к использованию. вместо этого следует использовать getFullYear

date.GetYear считается устаревшим,
хороший тон - использовать date.getFullYear, с ним пробем гораздо меньше.

<SCRIPT type="text/javascript">
   var today = new Date()
   var year = today.getFullYear()
   document.write("2004-",year,",")
</SCRIPT>

Работает как надо, спасибо!

Вот возникла ещё одна проблема с обновлением времени в Firefox. Если кто-нибудь сможет помочь - буду очень благодарен.

<HTML>
<HEAD>
<TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
</HEAD>
<BODY onLoad="goforit()" marginwidth="5" marginheight="5" text=#330033 bottommargin="5" leftmargin="5" topmargin="5" rightmargin="5">

<SCRIPT language="JavaScript">
  var dayarray=new Array("Сегодня")
  var montharray=new Array("Января","Февраля","Марта","Апреля","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабря")
  function getthedate(){
    var mydate=new Date()
    var year=mydate.getFullYear()
    var day=mydate.getDay()
    var month=mydate.getMonth()
    var daym=mydate.getDate()
      if (daym<10)
        daym="0"+daym
    var hours=mydate.getHours()
    var minutes=mydate.getMinutes()
    var seconds=mydate.getSeconds()
    var cdate="<FONT color='#330033' face='Verdana' style='font-size: 10pt'><B>"+dayarray+" "+daym+" "+montharray[month]+", "+year+" | "+hours+":"+minutes+":"+seconds+"</B></FONT>"
      if (document.all)
        document.all.clock.innerHTML=cdate
      else
        document.write(cdate)}
      if (!document.all)
        getthedate()
      function goforit(){
      if (document.all)
        setInterval("getthedate()",1000)}
</SCRIPT>
<SPAN id="clock"></SPAN>
        
</BODY>
</HTML>

С ходу могу только сказать, что скрипт работает только в IE и, наверное в Opera, т.к. document.all есть только в IE, а Opera подкладывается под него.

Хотите более развёрнутых ответов, потрудитесь задать вопрос. Лень в этом спагетти разбираться.

Проблема скорее всего с document.all - это как минимум, добавьте проверку на наличие document.getElementById, и если есть, пользуйтесь им, иначе работать не будет. Может есть и еще ошибки. Скрипт вызывает document.write, если не находит document.all, в этом случае как раз время не будет обновляться. Вообще, иногда можно обойтись более простыми средствами, например, обновлять время в текстовом поле или на кнопке. Документацию по такому методу легко было найти еще в 1998 году. А текстовое поле или кнопку можно замучить стилями, так что она сольется с окружением, только не делайте ее disabled - будут проблемы в Internet Explorer.

Andrewxa пишет

Вот возникла ещё одна проблема с обновлением времени в Firefox...

Вот этот

Выделить код

Код:

...
      if (document.all)
        document.all.clock.innerHTML=cdate
      else
        document.write(cdate)}
      if (!document.all)
        getthedate()
      function goforit(){
      if (document.all)
        setInterval("getthedate()",1000)}
...

меняем вот так:

Выделить код

Код:

...
      if (document.all)
        document.all.clock.innerHTML=cdate
      else
        document.getElementById('clock').innerHTML=cdate}}
      if (!document.all)
        getthedate()
      function goforit(){
        setInterval("getthedate()",1000)}
...

Большое спаибо! Работает, но надо ещё немного подправить. А правильный код будет такой (в предыдущем были синтаксические ошибки):

    if (document.all)
      document.all.clock.innerHTML=cdate
    else
      document.getElementById('clock').innerHTML=cdate
    if (!document.all)
      getthedate()}
function goforit(){
   setInterval("getthedate()",1000)}