2

私は約10を持っており<div><div>それぞれに異なる日時があります。クライアントの現地時間がその時間と一致するときに、Javaスクリプト関数を呼び出したいです<div>

<div id="a" class ="help">2/3/2013 6:39:14 PM</div>
<div id="b" class ="help">2/3/2013 2:39:14 PM</div>
<div id="c" class ="help">2/4/2013 6:39:14 PM</div>
<div id="d" class ="help">12/29/2013 10:39:14 AM</div>

クライアント マシンの現在の日時が の日時と一致する場合<div>。関数を呼び出すcallMe()

今のところ、私が持っているのは - いくつかの php コード:
echo "<script type='text/javascript'>putTime(".$questionData['expiry'].",".$needAnswer[$i].")</script>"; と javascript:
function putTime(x,y) {
var theDate = new Date(x*1000); // convert time value to milliseconds
var dateString = theDate.toLocaleString();
document.getElementById(y).innerHTML = dateString;
}
これだけです。

4

5 に答える 5

1

別の可能性として、現在の時間に対して各 div の時間をチェックするリクエスト アニメーション フレームに関数を登録することもできます。そうすれば、タイムアウトなどを台無しにすることはありません。最善の解決策ではないかもしれませんが、単なる考えです。

于 2013-02-01T02:09:04.480 に答える
0

とても簡単です

var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) -now;

if (millisTill10 < 0) 

{
     millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.

}

setTimeout(function(){alert("It's 10am!")}, millisTill10);
于 2013-05-06T09:24:57.363 に答える
0

これは、あなたが求めたすべてを行うはずです(jQueryを使用できると仮定します):

var timers = [];


$('div.help').each(function() {
    var localeString = $(this).text();
    var date = new Date(localeString);
    var timestamp = date.getTime();
    timers.push({
        time: timestamp,
        div: this,
    });
});


setInterval(function() {
    var now = (new Date()).getTime();
    for(var i=0; i<timers.length; i++) {
        var timer = timers[i]
        if(timer && (now >= timer.time)) {
            callMe();
            timers[i] = false;
        }
    }
}, 500);

function callMe() {
    alert('i was called');
}

編集:修正コード

コンソールを開いて次のように入力すると、これが機能していることを確認できます。

timers.push({
    time: (new Date()).getTime()+1000,
});
于 2013-02-01T00:46:39.247 に答える
0

なぜそれが必要なのかわかりませんが、考えられる解決策の1つを次に示します。

var dates = [],
    divs = document.querySelectorAll(".help");

for (var i = 0; i < divs.length; i++) {
    dates.push(new Date(divs[i].innerHTML).toString());
}

setInterval(function() {
    for (var i = 0; i < dates.length; i++) {
        if (dates[i] === new Date().toString()) {
            callMe();
            break;
        }
    }
}, 500);

あなたの日付形式は での解析に適しているようですnew Date()。そのため、上記のコードはほとんどのブラウザーで正常に動作するはずです。

于 2013-02-01T00:32:18.710 に答える
0

JavaScript タイミング イベントを使用して、特定の時間間隔内で関数を呼び出してみてください。

setInterval(function(){alert("Test")},5000);

代替案 --

setTimeout() : executes a one-time-only function, postponed by a specific number of mils

幸運を祈ります、アレックス

于 2013-02-01T00:38:14.523 に答える