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