Функция отсчета времени до события на Яваскрипт

ayrat9

Новичок
Функция отсчета времени до события на Яваскрипт

В ФФ работает, а ИЕ пишет:
---------------------------------------
error: object doesn't support this property or method
--------------------------------------
Помогите найти ошибку в коде:

<script language="JavaScript">
d = new Date();
d.setFullYear(2005, 11, 29);
d.setHours(20, 0, 36);
st = new Date ();
st.setFullYear(2005, 12, 23);
st.setHours(8, 30, 0);
if (st.getTime() > d.getTime())
{
diff = st.getTime() - d.getTime();
diff = Math.floor(diff/1000);
}
else diff = 0;
function countdown(sec)
{
if (sec > 0)
{
days = Math.floor(sec/(60*60*24));
hours = Math.floor((sec - (days*24*60*60))/(60*60));
mins = Math.floor((sec - (days*60*60*24) - (hours*60*60))/60);
secs = Math.floor((sec - (days*60*60*24) - (hours*60*60)) - (mins*60));
document.getElementById('days').innerHTML=' ' + days + ' ';
document.getElementById('hours').innerHTML=' ' + hours + ' ';
document.getElementById('mins').innerHTML=' ' + mins + ' ';
document.getElementById('secs').innerHTML=' ' + secs + ' ';
sec = sec - 1;
window.setTimeout("countdown(" + sec + ")", 1000);
}
else this.location.reload();
}
</script>
 

ayrat9

Новичок
яваскрипт консоль в ФФ девственно чиста, ф-ция отлично работает в этом браузере - проблема в ИЕ. там пишет строка 28 позиция 4, но я никогда не мог определить это в коде выдаваемом ИЕ view source
 

Линка

Новичок
ayrat9
1. А где ты вызываешь функцию countdown(sec)?
2.Самое важное Какого ты назвал идентификаторы также как и переменные?
document.getElementById('secs').innerHTML=' ' + secs + ' ';
secs = Math.floor((sec - (days*60*60*24) - (hours*60*60)) - (mins*60));
JAVASCRIPT ТЕБЕ ЭТОГО не простит :)
Поменяй и все заработает
 

MD

Guest
Линка, да ладно .. :)

это работает в мозилле и ИЕ каком-то .. :

<script language="JavaScript">
function pica ()
{
var pica;
pica = 14
document.getElementById('pica').innerHTML = pica;
}
</script>
<span id='pica'>12</span>
<input type="button" onclick="pica();"/>
 

Линка

Новичок
MD
Я согласна, весь прикол в том что если ты из своего примера уберешь
то работать тоже не будет.
Заметь у ayrat9 в примере этого нету;
так что ему надо одно из двух или обьявлять явным образом переменные или следить что бы индефикаторы не совпадали с переменными
 

MD

Guest
Линка, ты проверила? :)

работает все-равно ..

<script language="JavaScript">
function pica ()
{
// var pica;
pica = 14;
document.getElementById('pica').innerHTML = pica;
}
</script>
<span id='pica'>12</span>
<input type="button" onclick="pica();"/>
 

ayrat9

Новичок
Как ни странно, но Линка права.
Помогло
var days;
var hours;
....

Спасибо
 

Линка

Новичок
MD
Не знаю как у тебя, а у меня после второго нажимания вылезает ошибка.Версия броузера: 4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2), в опере тоже лажа
<script language="JavaScript">
function pica ()
{
// var pica;
pica = 14;
document.getElementById('pica').innerHTML = pica;alert('');
}
</script>
<span id='pica'>12</span>
<input type="button" onclick="pica();"/>
Это класно с алертом видно, жми не жми а окошко вторай раз непоявится
 

MD

Guest
угу, теперь сам увидел, только проблемма не в конфликте имен переменных и id.

pica = 14; - перегружает function pica() ... отсюда и не работает.

сам как-то не догнался, шо оно без this может такие вещи делать.
 

zarus

Хитрожопый макак
Тоже в эту проблему в ИЕ встрял - в ФФ код работает, в ИЕ - нет. Посмотрел, что там не так, и показалось, что у ИЕ все переменные в функциях не заданные через var считаются глобальными. А в фф, как в ПХП - все, что появляется внутри функции - локальное.
Код:
var some_var;
some_var = 'text';
function some_func() {
  alert(some_var);
}
Нормально работает в ИЕ и в ФФ.
А если задать что-то вроде
Код:
function some_func1() {
  some_var = 'text';
}
function some_func2() {
  alert(some_var);
}
some_func1();
some_func2();
В ИЕ выведет алерт, а в ФФ пошлет подальше.
з.ы. Может я опять ламер.
з.з.ы. Проблема была встречена в ИЕ 6.0 и в ФФ 1.5
 
Сверху