繁体   English   中英

JavaScript代码的奇怪问题

[英]Strange problem with JavaScript code

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

问题在于它正在按名称访问DOM元素。

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

var thetime;

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

顺便说一句,你可以替换常规的文本框DIV通过设置元素div的ID来thetime ,并更换thetime.valuethetime.innerHTML

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

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

<div name=foo></div>

将为您提供一个变量“ foo”-这是非标准的,您应该这样做

document.getElementByName("foo") 

获取计时器输出元素。

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

并在输入中添加id =“ thetime”而不是name =“ thetime”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM