2

嗨 Web 开发大师,首先我想说我不相信自己的眼睛 - 我有一段 javascript 在 IE7 中运行良好,但在 Firefox 中不行!!!:)))) 那是个小玩笑。:) 所以我已经告诉过你这个问题(这不是开玩笑),现在我正在粘贴 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
4

3 回答 3

3

问题是它按名称访问 DOM 元素。

将以下代码添加到顶部以声明thetime元素的变量,添加id="thetime"到,并在元素中添加对inINPUT的调用。 init();onloadbody

var thetime;

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

顺便说一句,您可以将文本框替换为常规DIV元素,方法是将div的 ID 设置为thetime,然后替换thetime.valuethetime.innerHTML

此外,最好使用函数而不是字符串调用 setTimeout;你应该分别用和替换"display();"和。"recalc();"displayrecalc

于 2009-10-23T02:33:00.323 回答
3

IE 有一个“功能”,其中具有名称属性的元素被放置在窗口对象中,例如。

<div name=foo></div>

会给你一个变量“foo”——这是非标准的,你应该这样做

document.getElementByName("foo") 

获取定时器输出元素。

于 2009-10-23T02:33:11.587 回答
0
var thetime = document.getElementById("thetime");

并将 id="thetime" 而不仅仅是 name="thetime" 添加到输入

于 2009-10-23T02:33:51.880 回答