1

したがって、ページに 2 つのスクリプトがあります。

  • 最初のものは、配列からランダムに数字を選択し、それを「number」という要素に挿入します。
  • 2 つ目は、分と秒として解釈される 2 つの変数からカウントダウンするカウントダウン スクリプトです。カウントダウンがゼロになるとサウンドが再生されます。

現時点では、2 番目のスクリプトはすべて手動でセットアップされているため、分数と秒数はスクリプト自体にハードコーディングされています。最初のスクリプトでページに挿入された数字を 2 番目のスクリプトで取得し、それを変数として使用するようにしたいと思います。

これが私がどのように機能させたいかのより良い例です:

ページを読み込むと、(X) 分しか残っていないことがわかり (X = 最初のスクリプトによって挿入されます)、(X) が何であれ、2 番目のスクリプトの「分」変数として機能します。ページの別の場所に (X) 分からのカウントダウンを表示します。

最初のスクリプトの出力は次の場所に挿入されます。

<span id="minutes"></span>

2 番目のスクリプト (変更が必要なスクリプト) のコードは次のとおりです。

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;

(2 番目のスクリプトは最初のスクリプトの後に実行されます)

...しかし、「null」分から始まるだけで、うまくいかないようです。

誰かがこれに光を当てることができますか?

4

1 に答える 1

2

解決:

var minutes = Number(document.getElementById('minutes').innerHTML);

説明:

おそらく文字列 minutes: (引用符を追加) を意味します

var minutes = document.getElementById('minutes');
var seconds = 0;

しかし、それは DOM オブジェクトを返します。<span>innerHTML は、タグの内側にあるものを返します

var minutes = document.getElementById('minutes').innerHTML;

ただし、それが使用されているすべての場所で文字列であることを理解する必要があります。そのため、暗黙的な型変換があった可能性がある場所ではstring + number、明示的に行うか、コードを変更して暗黙的な変換を許可するか、使用時にそれを処理する必要があります。最初に分をインスタンス化します。

したがって、次を使用して型変換を行いますNumber()

于 2012-07-30T18:47:30.653 に答える