2

はい、レストランのウェブサイトがあります。現在、JavaScriptに単純なifステートメントがあり、時刻に応じてテキストの一部を「開いていた」から「閉じていた」に変更しています。ただし、携帯電話でブラウザを閉じた場合でも、技術的にはバックグラウンドで開いています。したがって、ブラウザを再度開くと、ページを更新するまで閉じられたと表示されるはずの時間の後に開いたと表示されます。リアルタイムで更新する方法を見つけたいと思います。setIntervalとsetTimeoutを使用して、これとwhileループを実行しようとしましたが、これまでのところ何もありません。つまり、setIntervalを使用すると、時間を印刷でき、リアルタイムで増分します。では、なぜ1秒ごとにifステートメントを実行して、目的のテキストを出力できないのでしょうか。

これが今のところそれを表示する私のコードです。

 var date = new Date().getHours();
 if ((date > 9) && (date < 20) && (day != 0)) {
        y="<span style=\"color:#07ed11\">We're Open!</span>";
    }
    else {
      y="<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>"; 
    }
                    document.getElementById("open-close").innerHTML=y;

リアルタイムで印刷して、適切なタイミングで開いた状態から閉じた状態に変化するのを確認できるようにしたいだけです。

4

3 に答える 3

5

jsFiddleの

新しいバージョン

私は自由に戻ってこれを修正しました。このバージョンの方がうまくいくと思います

var checkOpenStatus = function () {
    var d = new Date();
    var date = d.getHours();
    var day = d.getDay();
    if ((date > 9) && (date < 20) && (day != 0)) {
        y = "<span style=\"color:#07ed11\">We're Open!</span>";
    } else {
        y = "<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>";
    }
    document.getElementById("open-close").innerHTML = y;
    setTimeout(checkOpenStatus,15000);
};

checkOpenStatus();

100ミリ秒ごとではなく、15秒ごとに実行されます。

古いバージョン

これを試して

var checkOpenStatus = function () {
    var d = new Date();
    var date = d.getHours();
    var day = d.getDay();
    if ((date > 9) && (date < 20) && (day != 0)) {
        y = "<span style=\"color:#07ed11\">We're Open!</span>";
    } else {
        y = "<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>";
    }
    document.getElementById("open-close").innerHTML = y;
}
setInterval(checkOpenStatus,100); //removed anon function

100でミリ秒ごとに更新されますsetInterval。好みに応じて、速くしたり遅くしたりすることができます。

于 2013-03-14T01:42:19.313 に答える
1
  var checkOpenStatus =function () {
        var d = new Date();
        var date = d.getHours();
        var min = d.getMinutes();

  if ((date>7 || (date == 7 && min >= 30)) && (date < 22) && (day != 0)) {
           y = "<span style=\"color:#07ed11\">We're Open!</span>";
        } else {
           y = "<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>";
        }
        document.getElementById("open-close").innerHTML = y;
    };
    checkOpenStatus();
于 2017-07-13T08:16:13.260 に答える
0

邪魔にならないクロージャースタイル:

var updateElement = function($el) {
    return function updater() {
        $el.text(new Date()); // dummy, your logic goes here...
        setTimeout(updater, 100);
    }
}

var fooUpdater = updateElement($("#foo")); 

setTimeout(fooUpdater,1000)
于 2013-03-14T01:48:37.090 に答える