javascript 的一部分在 IE8 中不工作
Part of javascript not working in IE8
以下 querySelector 功能在 IE8 中不起作用,但在 IE 11 中同样有效。
代码:
$(document).ready(
function() {
$(window).load(
function() {
var fiveMinutes = 60 * 15, display = document
.querySelector('#time');
startTimer(fiveMinutes, 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) {
timer = duration;
}
}, 1000);
}
HTML代码:
<div >
<div id ="timer">
Next Refresh will be in <span id="time">05:00</span> minutes!
</div>
<div>
HTMLElement#textContent
IE8 不支持。
您正在使用 jQuery,让我们使用 jQuery 来解决这个问题 - 最初创建它的一半原因是为了处理浏览器不一致(只有一半,这不再是它的主要目的存在的原因)。
最小的变化就是改变
display.textContent = minutes + ":" + seconds;
到
$(display).text(minutes + ":" + seconds);
您对该代码还有其他一些问题。特别是,您正在成为 The Horror of Implicit Globals 的牺牲品——声明您的变量!您可以使用 jQuery 来查找元素,而不是使用 querySelector
。所以:
$(document).ready(
function() {
$(window).load(
function() {
var fiveMinutes = 60 * 15,
display = $("#time"); // Use jQuery to look this up
startTimer(fiveMinutes, display);
});
function startTimer(duration, display) {
var timer = duration,
minutes, seconds;
setInterval(function() {
// Note the variable declarations
var minutes = parseInt(timer / 60, 10)
var seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.text(minutes + ":" + seconds); // Use text() to set the text
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
}
);
以下 querySelector 功能在 IE8 中不起作用,但在 IE 11 中同样有效。
代码:
$(document).ready(
function() {
$(window).load(
function() {
var fiveMinutes = 60 * 15, display = document
.querySelector('#time');
startTimer(fiveMinutes, 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) {
timer = duration;
}
}, 1000);
}
HTML代码:
<div >
<div id ="timer">
Next Refresh will be in <span id="time">05:00</span> minutes!
</div>
<div>
HTMLElement#textContent
IE8 不支持。
您正在使用 jQuery,让我们使用 jQuery 来解决这个问题 - 最初创建它的一半原因是为了处理浏览器不一致(只有一半,这不再是它的主要目的存在的原因)。
最小的变化就是改变
display.textContent = minutes + ":" + seconds;
到
$(display).text(minutes + ":" + seconds);
您对该代码还有其他一些问题。特别是,您正在成为 The Horror of Implicit Globals 的牺牲品——声明您的变量!您可以使用 jQuery 来查找元素,而不是使用 querySelector
。所以:
$(document).ready(
function() {
$(window).load(
function() {
var fiveMinutes = 60 * 15,
display = $("#time"); // Use jQuery to look this up
startTimer(fiveMinutes, display);
});
function startTimer(duration, display) {
var timer = duration,
minutes, seconds;
setInterval(function() {
// Note the variable declarations
var minutes = parseInt(timer / 60, 10)
var seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.text(minutes + ":" + seconds); // Use text() to set the text
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
}
);