忙しい現代人の腰&肩のお悩み対策!

アクセス時からのカウントダウンタイマー設置について質問です。

サイトに設置するカウントダウンタイマーで

例えば、期限を2日間と設定し、
初回の訪問時からカウントできますか?

同じ人が2回目にサイトを訪問した場合は
初回からカウントされた時間の続きになります。

ですから、訪問者1人1人 訪問時間が違うわけですから、
それぞれ期限が異なることになります。

このような設定のスクリプトは可能でしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (13件中1~10件)

No.4,6,8,12です


> しらべときます。
といっておきながら、しらべるまえに、「とある(うちゅうじんのような?)かた」に
おしえていただきました。いか。そのいんようです。

・encodeURI(s) は、s を「URI として機能するよう」エスケープする。
・encodeURIComponent(s) は、s を「URIComponent として埋め込めるよう」エスケープする(それ自体が URI として機能するとは限らず、元の形に戻す責任はアプリ側が負う)。
Cookie のドメイン指定は(相対)URI として機能させねばならないので、ここで encodeURIComponent() を使ってはいけません。

ということです。(のどぼとけを、れんだで、ちょっぷしながらいうと、それっぽいです)

それと、「とある(こっちはふっつうのちきゅうじんの)かた」からも、
してきがありました。
 function addDay ( day, date ) {
  if( 'number' !== typeof day ) day = 0;
  if( 'object' !== typeof date ) date = new Date;
  return (date.setDate( date.getDate() + day ), date);
 }
は、
 function addDay ( day, date ) {
  if( 'number' !== typeof day ) day = 0;
  if( 'object' !== typeof date ) date = new Date;
  date.setDate( date.getDate() + day );
  return date;
 }
にです。やってることは、おなじなのですが、まぎらわしくかいてどうする?
ということで。ていせいしてください。ごめんなさい。
    • good
    • 0

なぁ~にぃ~やっちまったなぁ~!



targetDay = addDay(2).getTime();

targetDay = addDay( LIMIT_DAY ).getTime();
に。

encodeURIComponent() ? ごめん、しらべときます。
(よってたかって・・・。)
    • good
    • 0

ぼそっと。

     (part2?)

 LIMIT_DAY = 2; って使ってないけど…
    • good
    • 0

興味深かったので、URIエンコード関数を一通り調べてみました。



encodeURIComponent - MDC
https://developer.mozilla.org/ja/Core_JavaScript …
decodeURIComponent - MDC
https://developer.mozilla.org/ja/Core_JavaScript …
encodeURI - MDC
https://developer.mozilla.org/ja/Core_JavaScript …
decodeURI - MDC
https://developer.mozilla.org/ja/Core_JavaScript …

javascript: escape(), encodeURI(), encodeURIComponent() 比較 (groundwalker.com)
http://groundwalker.com/blog/2007/02/javascript_ …
You Look Too Cool ? JavaScriptのescapeとencodeURIとencodeURIComponentの違い
http://stabucky.com/wp/archives/554

encodeURIComponent() は知っていたけど、encodeURI() は知らなかったなあ。

-------
var uri = 'http://example.com/search?foo=テスト& foo=&hoge=*!"(),/.&end';
alert (encodeURI(uri)); // http://example.com/search?foo=%E3%83%86%E3%82%B9 …(),/.&end
alert (encodeURIComponent(uri)); // http%3A%2F%2Fexample.com%2Fsearch%3Ffoo%3D%E3%83%86%E3%82%B9%E3%83%88%26%20foo%3D%26hoge%3D*!%22()%2C%2F.%26end
-------

・encodeURIComponent() はGETパラメータなどにURIを埋め込むときのために完全にURIエンコードする。
・encodeURI() はURIとしてはほぼ正しいのだけど、URIエンコードの取りこぼしがある場合において安全な文字にエスケープする。

encodeURI() は「引数にとる値がURIとして正しい文字列である必要がある」ので、使いどころが難しいですね。
万全を期すならば、URIをパースする必要があるのではないかと思います。
例えば、#8 で babu_babooさん は encodeURI (domain) を使われていますが、「domain が正しいURIであること、をどこで保証するのか」って問題が出てきそうです。
私ならそういうのを考えるのが面倒なので、encodeURIComponent() で強制的にエンコードする方法をとるかもしれない…。
    • good
    • 0

 //その2_________________________


 
 var COOKIE_NAME = 'myCount';
 var LIMIT_DAY = 2;
 var SHELF_LIFE = 10;
 var TIMEOUT_MESS = 'おとといきやがれぇ~!';

 var node = doc.getElementById( 'mess' );
 var targetDay = parseInt( getCookie( COOKIE_NAME ) );

 if( !targetDay ) {
  targetDay = addDay(2).getTime();
  setCookie( COOKIE_NAME, targetDay + '', SHELF_LIFE );
 }

 (function () {
  var text = '花火点火まであと、';
  var s = (targetDay - (new Date).getTime()) / 1000 |0;

  if (s < 0)
   text = TIMEOUT_MESS;

  else {
   text += padding( s / 86400 |0) + '日と' +
    padding( s % 86400 / 3600 |0) + '時間' +
    padding( s % 3600 / 60 |0) + '分' +
    padding( s % 60 |0) + '秒です';
   setTimeout (arguments.callee, 1000);
  }

  node.firstChild.nodeValue = text;
 })();
})(this.document);

//-->
</script>
    • good
    • 0

かいてみた。

やっぱりむだにながいので、ぶんかつです。
ぜんかくくうはくは、はんかくにでもして。

2にちたってみないと、むしとりできませ~ん!?

<!DOCTYPE html>
<title></title>
<style type="text/css">
body { background : black; color: red; }
p { font-size:200%; }
p.cm { font-size: 400%; color: green; }
p.cm2 { font-size: 100%; color: yellow; }
<style type="text/css">
</style>

<body>

<p id="mess">有効期限は、初めてページを閲覧してから2日です</p>
<p class="cm">花火大会開催中!!</p>
<p class="cm2">(出場者募集中、商品はなんと「黒豆10粒」)</p>

<script type="text/javascript"><!--
(function (doc) {

 function addDay ( day, date ) {
  if( 'number' !== typeof day ) day = 0;
  if( 'object' !== typeof date ) date = new Date;
  return (date.setDate( date.getDate() + day ), date);
 }

 function getCookie ( name ) {
  name = encodeURIComponent( name ).replace( /([.*()]) /g, '\\$1' );
  var value = doc.cookie.match( RegExp( name + '\\s*=\\s*(.*?)(?:[\\s;,]|$)' ) );
  return value ? decodeURIComponent( value[1] ): '';
 }

 function setCookie ( name, value, day, path, domain ) {
  return doc.cookie = encodeURIComponent (name) + '=' + encodeURIComponent (value) +
   '; ' + 'expires=' + ( addDay(day) ).toUTCString () + '; ' + (path ? 'path=' + encodeURI (path) + '; ': '') +
   (domain ? 'domain=' + encodeURI (domain) + '; ': '');
 }
 function padding ( n ) { return n < 10 ? '0' + n: n; }
    • good
    • 0

>babu_babooさんへ



いやいや、ぜんぜんそんなことはないですよ^^

大した引き出しもないのに出しゃばって失敗したなぁと思って;
まだまだわからないことが多いので、
慎重に回答しないとならないなぁと反省しておるところです。

それに誤りや間違いを指摘されるのは自分も勉強になるし、
悪い気どころか逆に「ありがとう」という気持ちです。
ですので、ほんとにお気になさらずに^^
    • good
    • 0

zeff さんへ



きをわるくしないでね。

ほかで、taloo さんがおっしゃっられていましたが、
>他の回答者からのツッコミがないというのが最大の欠点

まったく、そのとおりだとおもいます

ほかのかたがたのように、てきかくな「資料」をていじしませんが
「ぼそっと」は、つづくかな?

わたしに、がっつんとつっこむと、へこみ(&むつける(方言))ますが、ぬる~ぃのならOK!
    • good
    • 0

今回のご質問の解決点は「Cookieを使うんだ」という点だと思います。



スクリプトはとりあえず動いたのでオマケで載せただけです。
その中にキーワードが含まれてそうだったので。
escapeやunescapeが何の働きをしてるかわかっていませんし;
非推奨?なのも知らないぐらいで^^;

だから自分が偉そうに言うことでは無いんですけど、
正しく動くスクリプトが欲しいならそれを待つも良し、
がんばって自分で作ってみたけど動かない等の場合に再質問、
というのが適切では無いでしょうか。
    • good
    • 0

ぼそっと。



escape および unescape かんすうは
https://developer.mozilla.org/ja/Core_JavaScript …
    • good
    • 0
この回答へのお礼

ご回答いただきましてありがとうございます。

こちらのURLですが、
勉強不足でして^^;

すみません。

お礼日時:2010/06/21 22:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjavaスクリプトについて質問です。カウントダウンタイマーなのですが、

javaスクリプトについて質問です。カウントダウンタイマーなのですが、下記コードを入力したのですが、ホームページ上ではうまく作動しません。どこを訂正したらよろしいのでしょうか?

わかる方教えて下さい。



<!--カウントダウンタイマーここから-->

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<script type="text/javascript" src="check.js"></script>
<script type="text/javascript">
<!-- start of JavaScript
// 有効期限を取得
vartimeLimit = getTimeLimit( 1259629393, 'http://', 192 );

// 初回アクセス日を取得
varfirstTime = '<div>初回アクセス:' + getFirstTimeAccess() + '</div>';

// 残り時間を表示
$( function(){displayCountDown(); } );

function displayCountDown() {
vartimer;
vartoday = new Date()
vardays = Math.floor( ( timeLimit - today ) / ( 24 * 60 * 60 * 1000 ) );
varhours = Math.floor( ( ( timeLimit - today ) % ( 24 * 60 * 60 * 1000 ) ) / ( 60 * 60 * 1000 ) );
varmins = Math.floor( ( ( timeLimit - today ) % ( 24 * 60 * 60 * 1000 ) ) / ( 60 * 1000 ) ) % 60;
varsecs = Math.floor( ( ( timeLimit - today ) % ( 24 * 60 * 60 * 1000 ) ) / 1000 ) % 60 % 60;
varmilis = Math.floor( ( ( timeLimit - today ) % ( 24 * 60 * 60 * 1000 ) ) / 10 ) % 100;

if(( timeLimit - today ) > 0){
timer = '<div>残り ' + days + '日 ' + addZero( hours ) + '時間 ' + addZero( mins ) + '分 '+ addZero( secs ) + '秒 ' + addZero( milis ) + 'です。</div>'
$( '.countdown' ).html( firstTime + timer );

tid = setTimeout( 'displayCountDown()', 10 );
}else{
location.href='http://';
return;
}
}

// end of JavaScript -->
</script>

javaスクリプトについて質問です。カウントダウンタイマーなのですが、下記コードを入力したのですが、ホームページ上ではうまく作動しません。どこを訂正したらよろしいのでしょうか?

わかる方教えて下さい。



<!--カウントダウンタイマーここから-->

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<script type="text/javascript" src="check.js"></script>
<script type="text/javascript">
<!-- start of JavaScript
// 有効期...続きを読む

Aベストアンサー

 まず、varxxxxxxというのは全部、var xxxxのタイプミスですよね。
 
 そのカウントダウンタイマーのJSはどこから拾ってきたものですか?
ご提示されてる部分には、getTimeLimit()とかgetFirstTimeAccess()
の関数定義が無いみたいですけど、大丈夫ですか、
check.jsの中にあるんですよね...?

QJavaScriptで決まった「時刻」にページを移動するには?

JavaScriptで決まった「時刻」にページを移動するには?

お世話になります。

JavaScriptを使い、こちらが決めた時刻に自動的に
指定したページに切り替わりようにすどのようにすれば良いのでしょうか?

例:20時45分に現在のページから「page02.html」に移動する。

<script language="JavaScript" type="text/javascript">
<!--
var time = 45;

function setTimer(){
setTimeout("location.replace( './page02.html')", time * 60 * 1000);
}
//-->
</script>

自分なりに「setTimeout」「location.replace」を使って作ってみました。
移動する動作はリアルタイムで見られて良いのですが、
この場合、ページを開いてから45分後に移動してしまう為
指定した時刻での移動とはなりません。
「setTimeout」を使うのが間違っているような気がしますが、
他にどのようなメソッドを使ってよいのか分からない状態です。

必要に迫られJavaScriptを勉強し始めたばかりで分からないことだらけで
途方に暮れております。

ご指導よろしくお願いします。

JavaScriptで決まった「時刻」にページを移動するには?

お世話になります。

JavaScriptを使い、こちらが決めた時刻に自動的に
指定したページに切り替わりようにすどのようにすれば良いのでしょうか?

例:20時45分に現在のページから「page02.html」に移動する。

<script language="JavaScript" type="text/javascript">
<!--
var time = 45;

function setTimer(){
setTimeout("location.replace( './page02.html')", time * 60 * 1000);
}
//-->
</script>

自分なりに「setTimeout」「location.replace」...続きを読む

Aベストアンサー

すでにすばらしい回答が出ていますが、一応おいときますね。
function myfunc(h,m,url){
var goTo = function(){location.href = url};

//現在の時刻を秒数にする
var now = new Date();
var currentS = (now.getHours()*60 + now.getMinutes())*60 + now.getSeconds() ;

//目標時刻を秒数にする
var targetS = (h*60 + m)*60;

//あと何秒で目標時刻になるか、差を求める(秒)
var jisaS = targetS - currentS;
//マイナスならすでに 今日は目標時刻を過ぎているということなので1日加算する
if( jisaS < 0 ) jisaS += 24*60*60; //1日の秒数を加算

//確認用
alert("あと"+ jisaS +"秒で "+ h+"時"+ m +"分です");
return setTimeout( goTo, jisaS*1000);
}
myfunc(20,40,"./page02.html");

すでにすばらしい回答が出ていますが、一応おいときますね。
function myfunc(h,m,url){
var goTo = function(){location.href = url};

//現在の時刻を秒数にする
var now = new Date();
var currentS = (now.getHours()*60 + now.getMinutes())*60 + now.getSeconds() ;

//目標時刻を秒数にする
var targetS = (h*60 + m)*60;

//あと何秒で目標時刻になるか、差を求める(秒)
var jisaS = targetS - currentS;
//マイナスならすでに 今日は目標時刻を過ぎているということなので1日加算する
if( jisaS < 0 ) ji...続きを読む

Qjavascriptでカウントダウンタイマーを…

javascriptを用いた、カウントダウンタイマーの方法を教えて頂けないでしょうか?

【午前9時からカウント開始】
      ↓
【午後19時に終了(0)】
※毎日繰り返し

このようなカウントダウンも出来るものなのでしょうか?

超初心者ですが、独学で勉強したくて色々見てますが…、難しくてなかなか…。

どなたか、お知恵を貸して頂けたら、幸いです。

宜しくお願いします。

Aベストアンサー

こんな感じでいかがでしょうか?

<html>
<head>
<title>カウントダウン</title>
<script type="text/javascript">
<!--
function countdown(){
// 初期化
var starthour=9;//開始時
var endhour=19;//終了時
var now = new Date();
var hour = now.getHours(); // 時
var min = now.getMinutes(); // 分
var sec = now.getSeconds(); // 秒
var endsec =endhour*60*60;//開始時を秒に換算
var nowsec =hour*60*60+min*60+sec;//現在時刻を秒に換算
var secdif =endsec-nowsec;
var remhour =Math.floor(secdif/(60*60));//残り時間
var remmin =Math.floor((secdif-60*60*remhour)/60);//残り分
var remsec =secdif-60*60*remhour-remmin*60;//残り秒
//桁数をそろえる
if(remhour < 10) { remhour = "0" + remhour; }
if(remmin < 10) { remmin = "0" + remmin; }
if(remsec < 10) { remsec = "0" + remsec; }
//表示形式の設定
var value = remhour + '時' + remmin + '分' + remsec + '秒';
//表示
document.form1.text1.value = value;
//時間外は空白にする
if((hour < starthour)||(hour >= endhour))
{document.form1.text1.value = "";}
setTimeout("countdown()", 1000);
}
// -->
</script>
</head>
<body onLoad="countdown()">
<form action="#" name="form1">
<input type="text" name="text1" size="15">
</body>
</html>

こんな感じでいかがでしょうか?

<html>
<head>
<title>カウントダウン</title>
<script type="text/javascript">
<!--
function countdown(){
// 初期化
var starthour=9;//開始時
var endhour=19;//終了時
var now = new Date();
var hour = now.getHours(); // 時
var min = now.getMinutes(); // 分
var sec = now.getSeconds(); // 秒
var endsec =endhour*60*60;//開始時を秒に換算
var nowsec =hour*60*60+min*60+sec;//現在時刻を秒に換算
var secdif =endsec-nowsec;
var remhour =Math.floor(secdif/(6...続きを読む

Q初回訪問(アクセス)日時の取得方法

前回訪問ではなく、初回アクセスの日時を取得し表示したいです。
jquery.cookie.jsを使用してこれに http://q.hatena.ne.jp/1282238649 初回訪問日時を追加したいのです。
jquery.cookie.jsを使えばよいのか、javascriptで別に記述するのか、よくわかりません。
なるべく早く回答頂けると助かります。

Aベストアンサー

提示されたコードのエラーは、try&catchの文法ミスです。
私には、なんのためのtry&cathcか分かりませんでした。
もっとも、このエラーが解消されたからといって正常には動きません。

大筋(ifによる条件分岐)は正常だと思いますが、文法は概ね間違っています。
厳しい言い方ですが、間違いだらけで指摘するところが見つかりません。

jquery.cookie.jsは、cookieの操作を簡略するものですが、jqueryを使う使わない以前に、cookieを操作するにはやはりcookieの基本を知る必要があります。
まずは、cookieを理解できるまで、十分調べてください。


人気Q&Aランキング