2009-10-23 3 views
2

Привет мастеров веб-разработки, Сначала я хочу сказать, что я не верил в мои глаза - у меня есть часть javascript, которая отлично работает в IE7, и не в Firefox !!! :)))) Это была маленькая шутка. :) Так что я уже говорил вам проблему (это не шутка), теперь я вставив JavaScript:Странная проблема с кодом JavaScript

<script type="text/javascript"> 

<!-- This script and many more are available free online at --> 
<!-- The JavaScript Source!! http://javascript.internet.com --> 

<!-- Begin 
var ms; 
ms = %%CONTENT_REFRESH%% - 5; 
var stop; 
stop = 0; 
var myvalue; 

function display() { 
    if (!stop) { 
     setTimeout("display();", 1000); 
    } 
    thetime.value = myvalue; 
} 
function recalc() { 
    var hours; 
    var minutes; 
    var seconds; 

    ms = ms - 1; 
    hours = Math.floor(ms/3600); 
    minutes = Math.floor(ms/60); 
    if (minutes < 10) { 
     minutes = "0"+minutes; 
    } 
    seconds = ms - (minutes*60) - (hours*3600); 
    if (seconds < 10) { 
     seconds = "0"+seconds; 
    } 
    myvalue = hours+":"+minutes+":"+seconds; 
    thetime.value = myvalue; 
    if (myvalue == "0:00:00") { 
     stop = 1; 
    } 
    if (!stop) { 
     setTimeout("recalc();", 1000); 
    } 
} 
// End --> 
</SCRIPT> 

Это очень старый сценарий, я знаю, что. Это займет мое текущее оставшееся время песни, из моего winamp и обратного отсчета на сайте. Но, как я уже сказал, это не работает в Firefox.

тела и код, который вызывает таймер обратного отсчета времени выглядит следующим образом:

<body class="playlist_body" onLoad="recalc();display();"> 

Time Left In Song: <INPUT align="center" TYPE="text" Name="thetime" size=5 /> 

</body> 

// Изменить: Я смотрю на FireBug, и я увидел следующую ошибку:

thetime is not defined 
recalc()playlist.cgi (line 87) 
function onload(event) { recalc(); display(); }(load)1 (line 2) 
error source line: [Break on this error] thetime.value = myvalue;\n 
+2

Вы получаете какие-либо ошибки в консоли JavaScript в Firefox или консоли Firebug? – jason

+0

КАК МНОГО СТУПИД Я МОГУ БЫТЬ НЕКОТОРЫМИ !!! Я забыл посмотреть в FireBug! Да, это дало ошибку. Я редактирую свой вопрос с ошибкой в ​​нем! Спасибо Джейсону! :) – Spoonk

+0

Итак, что происходит, когда вы правильно определяете «время»? –

ответ

3

Проблема заключается в том, что это доступ к элементам DOM по имени.

Добавьте следующий код в верхней части, чтобы объявить переменную для thetime элемента, добавьте id="thetime" к INPUT, и добавить вызов init(); в onload в body элементе.

var thetime; 

function init() { 
    thetime = document.getElementById('thetime'); 
} 

Кстати, вы можете заменить текстовое поле с регулярным DIV элементом, установив идентификатор div «s для thetime, и замена thetime.value с thetime.innerHTML.

Кроме того, лучше назвать setTimeout функцией вместо строки; вы должны заменить "display();" и "recalc();" на display и recalc соответственно.

+0

Ну ... это похоже на умное решение, но ... Оно не говорит со мной ничего. Если ... я могу попросить вас вынести это мне ... – Spoonk

+1

Что происходит, когда вы пытаетесь? Убедитесь, что вы добавили 'init();' в начало 'onload ='. – SLaks

+0

DAMN !!! Он не будет работать раньше, потому что я добавил init(); после recalc и дисплея! Теперь, когда вы сказали мне, чтобы добавить его в начале, он работает JUST FINE !!! Большое спасибо!:)) – Spoonk

3

IE имеет «функцию», в которой элемент с атрибутом имени помещается в объект окна, например.

<div name=foo></div> 

Даст вам переменный «Foo» - это нестандартный, вы должны сделать

document.getElementByName("foo") 

Чтобы получить выходной таймер элемента.

+0

Это будет document.getElementsByName ("foo") [0]. «getElementByName» не является функцией –

+0

Я ничего не понял ... Я новичок с этим ... :( – Spoonk

0
var thetime = document.getElementById("thetime"); 

и добавить идентификатор = «Thetime» вместо того, чтобы просто назвать = «Thetime» на вход

+0

Это не удастся, потому что элемент еще не выйдет – SLaks

+1

, который зависит от того, где вы это делаете. –

+0

Это не работает вообще ... – Spoonk

Смежные вопросы