目標を達成するには、次の 2 つの方法があります。
Cookies または DataStorage : この方法は、クライアントを信頼できる場合に適しています。
クッキー
JavaScript ストレージ
StackOverflow の例
データベース ストレージ: バックエンドに対して ajax 呼び出しを実行し、ユーザーのクリックを保存できます。この方法の問題は、毎秒データベースに再送信する必要があることです。
jQuery.ajax
あなたが見ているものを見ている理由:
プロセス フローは次のようになります。
サーバー側のコード -> クライアントにデータを送信 -> ブラウザが JS のレンダリングと実行を開始
Web はステートレスであるため、JavaScript クライアント フロント エンドに情報を保存しないため、これが最後のステップです。これを解決するには、上記のいずれかを実行する必要があります。
以下の上記の情報を使用して、あなたに合わせた例を示します。
デモ: jsFiddle
JS
function createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
} else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
$('.trigger').on('click', function (e) {
$(this).html('show')
$('.show').slideUp('medium');
var count = 10;
if (readCookie("timer") != undefined) count = readCookie("timer");
var counter = setInterval(timer, 1000);
function timer() {
createCookie("timer", count, 365);
count--;
if (count <= 0) {
clearInterval(counter);
$('.trigger').html('hide');
$('.show').slideDown('medium');
eraseCookie("timer");
return;
}
console.log(count);
console.log(readCookie("timer"));
$('.timer').html(count);
}
});