Javascript:获取页面元素的内容并将其用作变量?

时间:2012-07-30 18:45:09

标签: javascript element countdown

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

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

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

以下是我希望如何工作的更好示例:

你加载页面,它告诉你只有(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'分钟开始。

有人能否对此有所了解?

1 个答案:

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

进行类型转换