JavaScript定时器函数在IE10中不起作用,但在chrome中起作用

JavaScript定时器函数在IE10中不起作用,但在chrome中起作用,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,我目前被困在一个JavaScript代码块上,在chrome(44.0.2403.125版)中工作,但在IE 10中不工作 我读过多篇关于stackoverflow的文章,都有(有点)相同的问题,但所有的建议似乎对我都不起作用(或者我没有正确地实现它) 不管怎么说,我被困在以下几点上: 我在JavaScript中有一个计时器函数,它从10分钟倒计时到0分钟,当达到0分钟时,它会触发一个jquery函数,一个弹出框 javascript代码如下: <SCRIPT LANGUAGE="Java

我目前被困在一个
JavaScript
代码块上,
chrome(44.0.2403.125版)
中工作,但
IE 10中不工作

我读过多篇关于stackoverflow的文章,都有(有点)相同的问题,但所有的建议似乎对我都不起作用(或者我没有正确地实现它)

不管怎么说,我被困在以下几点上: 我在
JavaScript
中有一个计时器函数,它从10分钟倒计时到0分钟,当达到0分钟时,它会触发一个
jquery
函数,一个弹出框

javascript代码如下:

<SCRIPT LANGUAGE="JavaScript">
    function startTimer(duration, display) {
        var timer = duration, minutes, seconds;
        setInterval(function () {
            minutes = parseInt(timer / 60, 10)
            seconds = parseInt(timer % 60, 10);

            minutes = minutes < 10 ? "0" + minutes : minutes;
            seconds = seconds < 10 ? "0" + seconds : seconds;

            display.textContent = minutes + ":" + seconds;

            if (--timer < 0) {
                my_fun(); //the jquery function that popups the message-box 
                timer = duration;
            }
        }, 1000); //how fast to count
    }
    window.onload = function () {
        var tenMinutes = 60 * 10,
            display = document.querySelector('#time');
        startTimer(tenMinutes, display);
    };
</SCRIPT>
这让我相信
textContent
属性在
IE10
中不可用,所以我也检查了一下,尽管经过研究,我发现该属性在
IE10
中是允许的(应该可以工作)

我能想到的下一件事是,
window.onload
在IE10中不起作用,我读了一些关于在IE10中的
onload
中使用new的建议,如下所示:
window.onload=new function
,但这也没有任何效果

然后我尝试将
窗口粘贴到timer函数上方。onload
JavaScript代码,这样文本内容可能不是空的,但这也没有任何效果

所以现在我没有主意了,有人知道我该怎么解决吗

更新

谢谢大家的回答和建议!在尝试了所有的建议之后,它仍然需要一段时间来修复,但尽管如此,我还是修复了它

首先,我尝试添加
var显示作为一个全局变量,但这没有任何效果。接下来我看了一下我的代码页。
我正在做一个asp经典页面,做很多服务器端的事情。页面视图取决于一些查询。但除此之外,在一些asp经典服务器端句柄之后,我有了我的
$time ID
,因此我认为将ID向上移动到页面(在服务器端处理之前)可以让它工作。但这没有任何效果。在那之后我尝试了几件事,老实说,我已经记不清了

然后我看到了#Arunachalam的答案,并认为这实际上可以工作,因为我的另一个JQuery在IE中完成了它的工作,而JavaScript没有。因此,与其使用:

window.onload = function () {
            var tenMinutes = 60 * 10,
                display = document.querySelector('#time');
            startTimer(tenMinutes, display);
        };
我使用了它的JQuery版本:

$(function() {

 var tenMinutes = 60 * 10,display = document.querySelector('#time');  
 startTimer(tenMinutes, display);

}
但遗憾的是,这也没有任何影响。。 100次尝试/调整之后(由于它们不起作用,所以进行了反向调整),我使用Jquery再次尝试,但将其修改为:

jQuery(function ($) {
    var tenMinutes = 60 * 10,
        display = $('#time');
    startTimer(tenMinutes, display);
});
并通过将
更改为
JavaScript
函数和上述
Jquery
函数组合在同一个脚本标记中


这就成功了!现在开始工作了

计时器工作正常<代码>显示
指IE中的
null
。您的代码很好。我猜时间在IE中是不存在的。

计时器工作得很好<代码>显示
指IE中的
null
。您的代码很好。我猜
时间
在IE中不存在。

添加
变量显示行前<代码>功能开始计时器(持续时间,显示){…

该错误意味着变量
display
在您使用它的范围内找不到。在顶部定义它将使其成为全局变量,然后可以访问代码中的任何内容

完整的代码应该如下所示:

<SCRIPT LANGUAGE="JavaScript">
    var display;
    function startTimer(duration, display) {
        var timer = duration, minutes, seconds;
        setInterval(function () {
            minutes = parseInt(timer / 60, 10)
            seconds = parseInt(timer % 60, 10);

            minutes = minutes < 10 ? "0" + minutes : minutes;
            seconds = seconds < 10 ? "0" + seconds : seconds;

            display.textContent = minutes + ":" + seconds;

            if (--timer < 0) {
                my_fun(); //the jquery function that popups the message-box 
                timer = duration;
            }
        }, 1000); //how fast to count
    }
    window.onload = function () {
        var tenMinutes = 60 * 10,
            display = document.querySelector('#time');
        startTimer(tenMinutes, display);
    };
</SCRIPT>

var显示;
功能启动计时器(持续时间、显示){
var定时器=持续时间,分钟,秒;
setInterval(函数(){
分钟=parseInt(计时器/60,10)
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=分钟+“:”+秒;
如果(--定时器<0){
my_fun();//弹出消息框的jquery函数
定时器=持续时间;
}
},1000);//数数的速度有多快
}
window.onload=函数(){
var十分钟=60*10,
display=document.querySelector(“#time”);
startTimer(十分钟,显示);
};

添加
var显示;
行前
功能开始定时器(持续时间,显示){…

该错误意味着变量
display
在您使用它的范围内找不到。在顶部定义它将使其成为全局变量,然后可以访问代码中的任何内容

完整的代码应该如下所示:

<SCRIPT LANGUAGE="JavaScript">
    var display;
    function startTimer(duration, display) {
        var timer = duration, minutes, seconds;
        setInterval(function () {
            minutes = parseInt(timer / 60, 10)
            seconds = parseInt(timer % 60, 10);

            minutes = minutes < 10 ? "0" + minutes : minutes;
            seconds = seconds < 10 ? "0" + seconds : seconds;

            display.textContent = minutes + ":" + seconds;

            if (--timer < 0) {
                my_fun(); //the jquery function that popups the message-box 
                timer = duration;
            }
        }, 1000); //how fast to count
    }
    window.onload = function () {
        var tenMinutes = 60 * 10,
            display = document.querySelector('#time');
        startTimer(tenMinutes, display);
    };
</SCRIPT>

var显示;
功能启动计时器(持续时间、显示){
var定时器=持续时间,分钟,秒;
setInterval(函数(){
分钟=parseInt(计时器/60,10)
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=分钟+“:”+秒;
如果(--定时器<0){
my_fun();//弹出消息框的jquery函数
定时器=持续时间;
}
},1000);//数数的速度有多快
}
window.onload=函数(){
var十分钟=60*10,
display=document.querySelector(“#time”);
startTimer(十分钟,显示);
};

既然您已经在使用JQuery,我建议您在JQuery onload中调用函数,而不是在Window onload中调用函数

$(function() {

 var tenMinutes = 60 * 10,display = document.querySelector('#time');  
 startTimer(tenMinutes, display);

}

由于您已经在使用JQuery,我建议您在JQuery onload中调用函数,而不是在Window onload中调用函数

$(function() {

 var tenMinutes = 60 * 10,display = document.querySelector('#time');  
 startTimer(tenMinutes, display);

}

我知道,我只是没有将它的文本更改为十分钟(尚未)??请注意,您的错误消息说未定义时间。您是否在
$(文档)中动态创建时间。就绪(…)