所以我在页面上有两个脚本:
目前,第二个脚本都是手动设置的,因此分钟和秒的数量被硬编码到脚本本身。我希望第二个脚本能够获取第一个脚本插入到页面中的任何数字,并将其用作变量。
以下是我希望如何工作的更好示例:
你加载页面,它告诉你只有(X)分钟备用(X =第一个脚本插入),无论(X)是什么,在第二个脚本中充当'minutes'变量,现在显示页面上其他地方(X)分钟的倒计时。
第一个脚本的输出插入到:
<span id="minutes"></span>
这是第二个脚本的代码(需要更改的脚本):
var interval;
var minutes = 5;
var seconds = 0;
window.onload = function() {
countdown('countdown');
}
function play(file) {
var embed = document.createElement("embed");
embed.setAttribute('src', file);
embed.setAttribute('hidden', true);
embed.setAttribute('autostart', true);
document.body.appendChild(embed);
}
function countdown(element) {
interval = setInterval(function() {
var el = document.getElementById(element);
if(seconds == 0) {
if(minutes == 0) {
el.innerHTML = "Time's up!";
clearInterval(interval);
play('alarm.mp3');
return;
} else {
minutes--;
seconds = 60;
}
}
if(minutes > 0) {
var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
} else {
var minute_text = '';
}
var second_text = seconds > 1 ? 'seconds' : 'second';
el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + ' remaining';
seconds--;
}, 1000);
}
我尝试过更改
var minutes = 5;
var seconds = 0;
到
var minutes = document.getElementById(minutes);
var seconds = 0;
(第二个脚本在第一个脚本之后运行)
...但它似乎不起作用,只是从'null'分钟开始。
有人能否对此有所了解?
答案 0 :(得分:2)
var minutes = Number(document.getElementById('minutes').innerHTML);
你可能意味着字符串分钟:(添加引号)
var minutes = document.getElementById('minutes');
var seconds = 0;
但是返回DOM对象。 innerHTML将返回<span>
标记
var minutes = document.getElementById('minutes').innerHTML;
但是你需要意识到它是一个字符串无处不在,所以你可能已经使用string + number
进行了隐式类型转换,你现在必须明确地进行转换,或者更改代码以允许隐式转换,或在您第一次实例化分钟时处理它。
因此,我们使用Number()