1

所以我在一个页面上有两个脚本:

  • 第一个从数组中随机选择一个数字并将其插入一个名为“数字”的元素中。
  • 第二个是倒计时脚本,它从被解释为分钟和秒的两个变量开始倒计时。一旦倒计时达到零,它就会播放声音。

目前,第二个脚本都是手动设置的,因此分钟和秒数被硬编码到脚本本身中。我希望第二个脚本采用第一个脚本插入页面的任何数字,并将其用作其变量。

这是我希望它如何工作的更好示例:

您加载页面,它告诉您只有 (X) 分钟空闲(X = 由第一个脚本插入),无论 (X) 是什么,都充当第二个脚本中的“分钟”变量,现在在页面其他地方显示从 (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;

(第二个脚本在第一个脚本之后运行)

...但它似乎不起作用,只是从“空”分钟开始。

任何人都可以对此有所了解吗?

4

1 回答 1

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()

于 2012-07-30T18:47:30.653 回答