いつもお世話になっております。
JavaScriptのカウントダウンタイマーを利用して
カウントが0になった際にページ遷移を行いたいです。
更にクッキー処理を行っています。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <script> function setCookie (doc, name, value, expires, path, domain, secure) { if (3 > arguments.length) throw new Error; var cookie = [ encodeURIComponent (name) + '=' + encodeURIComponent (value) ]; if (expires) cookie[cookie.length] = 'expires=' + new Date (expires).toUTCString (); if (path) cookie[cookie.length] = 'path=' + encodeURI (path); if (domain) cookie[cookie.length] = 'domain=' + encodeURI (domain); if (secure) cookie.push ('secure'); doc.cookie = cookie.join ('; '); } function getCookie (doc, name) { if (2 > arguments.length) throw new Error; var n = encodeURIComponent (name).replace (/\W/g, '\$&'); var v = doc.cookie.match (new RegExp (n + '\s*=\s*(.*?)(?:[;,\s]|$)')); return (v) ? decodeURIComponent (v[1]): ''; } function addDay (dateObj, day) { var date = new Date (dateObj); date.setDate (date.getDate () + day); return date; } var COKKIE_NAME = 'hoge'; var target_date = getCookie (document, COKKIE_NAME); (function () { var now = new Date; if (target_date) { target_date = Date.parse (target_date); if (+now > target_date) { location.href = 'end.html'; } } else { target_date = addDay (now, 1); setCookie (document, COKKIE_NAME, String (target_date), addDay (now, 100)); } }) (); </script> </head> <body> <input type="text" id="fuga" size="40"> <script> (function () { var target = document.getElementById('fuga'); var int = Math.floor; (function loop () { var count = target_date - (new Date); var str = [ int (count % 86400000 / 3600000), ' 時 ', int (count % 3600000 / 60000), ' 分 ', int (count % 60000 / 1000), ' 秒 ', count % 1000, '' ].join (''); target.value = str; if (0 < count) setTimeout (loop, 20); else location.href = 'end.html'; })(); }) (); </script> </body> </html>
■追記
カウントが0になった際にページ遷移せずにループしてしまいます。
問題は以下の辺りだと思うのですが、わかりません...。
if (0 < count) setTimeout (loop, 20); else location.href = 'end.html';
ご教授のほど何卒よろしくお願いいたします。
インデントがぐちゃっとしてるのでそれは整理してもらうとして、現在のコードにおける問題はなにでしょうか。
何が起きているのか、具体的に記載してください。
エラーも確認してくださいね
修正依頼とご質問ありがとうございます。
インデントを直したのと、「カウントが0になった際にページ遷移せずにループしてしまいます。」を追記させていただきました。
多分修正漏れです
location.href = 'htp:next_page.html';
あと確認ですが「初めてHPを訪れてから24時間過ぎると移動する」という事でしょうか?
この場合の「ループ」は何(どんな減少ら意味)を指していますか?
kuma_kuma_様
ご指摘ありがとうございます。修正いたしました。
また、おっしゃる通り、「初めてHPを訪れてから24時間過ぎると移動する」という事です。
m.ts10806様
ページ遷移せずにタイマーが戻るということです。
回答2件
あなたの回答
tips
プレビュー