クリックカウンターの挙動がおかしい

このQ&Aのポイント
  • クリックカウンターの挙動がおかしいです。連続でクリックすると古い数字が出た後に正しい数字が表示されます。何故か2回数字が更新されてしまうのです。ブラウザにより挙動が異なりIE,Firefox,Chromeでは上記のようにiPodtouch,3DSのブラウザでは正常に動作しました。解決策はありますでしょうか?
  • jQueryとPHPを使い、画面遷移せずに回すクリックカウンターです。初期時にランダムな数字を生成し、パラメータとして付けることでユニークな状態にします。クリック後はカウンターを+1する処理を行います。
  • 解決策が求められているクリックカウンターの問題です。連続でクリックすると2回数字が更新されてしまい、正しい数字が表示されません。ブラウザにより挙動が異なりますが、IE、Firefox、Chromeでは上記のような問題が発生します。iPodtouchや3DSのブラウザでは正常に動作します。解決策を教えていただきたいです。
回答を見る
  • ベストアンサー

クリックカウンターの挙動がおかしい

jQueryとPHPを使い、画面遷移せずに回すクリックカウンター http://1bit.mobi/20110112164331.html こちらのカウンターを設置してみたのですが少し動作がおかしいです。 http://olo.sakura.ne.jp/test/test1.html 連続でクリックすると古い数字が出た後に正しい数字が表示されます。 何故か2回数字が更新されてしまうのです。 ブラウザにより挙動が異なりIE,Firefox,Chromeでは上記のように iPodtouch,3DSのブラウザでは正常に動作しました。 解決策はありますでしょうか?よろしくお願いします。 jQuery(document).ready(function(){ //初期時のカウンターファイル読み込み //ランダムな数字を生成し、パラメータとして付けることで、ユニークな状態にする。 var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn01 span").load("./count01.txt?r=" + randnum1); //カウンター追加後の読み込み関数 function func01(data){ var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn01 span").load("./count01.txt?r=" + randnum1); } //カウンター+1追加処理 jQuery('#btn01 p').click(function(e){ //「param1」変数の値と書き込みファイル名の情報をもってpost.phpへ。その後、関数func01を実行 jQuery.post("post.php" , {"param1": 'count01.txt'} , func01); jQuery("#btn01 span").load("./count01.txt"); }); });

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

よくわかってませんが… callbackでfunc01を呼んでいるので、最後の  jQuery("#btn01 span").load("./count01.txt"); は不要なのでは?

hhunngry
質問者

お礼

おおっ!ビンゴでした。 ご指摘箇所を取り除いたところ期待通りの動作を致しました。 ありがとうございました!!

関連するQ&A

  • コードをスマートにさせたい。

    jQueryとPHPを使い、画面遷移せずに回すクリックカウンター http://1bit.mobi/20110112164331.html 現在、上記のカウンターを2つ並べています。 この01,02の数字を変数にして指定回数ループで回してコードがスッキリさせたいのですが、 うまくいきませんでした。どのように修正したらよいでしょうか? http://olo.sakura.ne.jp/test/test.html jQuery(document).ready(function(){ //初期時のカウンターファイル読み込み var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn01 span").load("count/count01.txt?r=" + randnum1); jQuery("#btn02 span").load("count/count02.txt?r=" + randnum1); //カウンター追加後の読み込み関数 function func01(data){ var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn01 span").load("count/count01.txt?r=" + randnum1); } function func02(data){ var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn02 span").load("count/count02.txt?r=" + randnum1); } //カウンター+1追加処理 jQuery('#btn01 p').click(function(e){ //「param1」変数の値と書き込みファイル名の情報をもってpost.phpへ。その後、関数func01を実行 jQuery.post("count/post.php" , {"param1": 'count01.txt'} , func01); }); jQuery('#btn02 p').click(function(e){ //「param1」変数の値と書き込みファイル名の情報をもってpost.phpへ。その後、関数func02を実行 jQuery.post("count/post.php" , {"param1": 'count02.txt'} , func02); }); });

  • ワンクリックしかできないクリックカウンター

    現在、ログイン式掲示板を作成中です。 その掲示板で、投稿に対してログイン中のみ、一人一回しかクリックできない「いいねボタン」のようなものを設置したいのですが、(mixiつぶやきのようなものです)どのようにすればよいのかわからずこまっております。 ネットにのっているものを参考にさせていただいて、クリック数をカウントする機能は、jQueryとjavascriptとphpでできたのですが、一回しかクリックできないようにするにはどうすればよいかわからないので、教えていただけませんか? どうぞよろしくお願いいたします。 javascript jQuery(document).ready(function(){ //初期時のカウンターファイル読み込み //同じファイル名だと正常に読み込めないので、ランダムな数字を生成し、パラメータとして付けることで、ユニークな状態にしている。 var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn01 span").load("./count01.txt?r=" + randnum1); //カウンター追加後の読み込み関数 function func01(data){ var randnum1 = Math.floor( Math.random() * 10000 ); jQuery("#btn01 span").load("./count01.txt?r=" + randnum1); } //カウンター+1追加処理 jQuery('#btn01 p').click(function(e){ //「param1」変数の値と書き込みファイル名の情報をもってpost.phpへ。その後、関数func01を実行 jQuery.post("post.php" , {"param1": 'count01.txt'} , func01); jQuery("#btn01 span").load("./count01.txt"); }); }); index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>カウントサンプル</title> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="js/count.js"></script> </head> <body> <div id="btn01"><p><a href="javascript:void(0);">いいね!</a></p><span></span></div> </body> </html> post.php <?php $file = $_REQUEST['param1']; $c = file_get_contents($file); $c++; $fp = fopen($file, "r+"); @fputs($fp,$c); fclose($fp);

    • ベストアンサー
    • PHP
  • クリック数を1日ごとにカウントしたいです。

    どうか教えてください。 画像やボタンなどをクリックした時に、その(トータルの累計の)数を画像やボタンの横に表示する方法については、次のように「教えて!goo」にあります。 http://okwave.jp/qa/q6858457.html カウントサンプルページ http://olo.sakura.ne.jp/test/test.html これを累計の数ではなく、1日ごとにカウントするには、以下のコードをどのように変えたらよいでしょうか? 例えば、3月3日00:00~24:00の24時間以内にクリックされた数を表示し、3月4日00:00になったら、表示される数が「0」にもどるような場合を想定しています。 言い換えれば、(例えば)毎日00:00になったらカウント数がリフレッシュされるような表示方法です。 // カウンター読込み(表示) function load(n){  var uri = "count/count0" + n + ".txt?r=" + Math.floor(Math.random() * 10000);  jQuery("#btn0" + n + " span").load(uri); } // 初期表示+イベント設定 for(var n=0; ++n<3;){  load(n);  jQuery("#btn0" + n + " p").click(   (function(m){    return function(){     jQuery.post("count/post.php", {"param1":"count0" + m + ".txt"}, function(){load(m);});    };   })(n)  ); }

  • jqueryについて質問です。

    jqueryについて質問です。 ----------------------------------------------------------- test.js $(window).load(function() { $("body").load("a.php"); $("#btn").click(function() { alert();///動作しない } }); ----------------------------------------------------------- a.html <input type="button" id="btn" name="btn" value="send"> ----------------------------------------------------------- load先のidのクリックを監視するにはどうしたらいいのでしょうか?

  • PHPでアクセスカウンタ

    表題どおりのシンプルな質問なんですけど、加算されません。 テキストにあるコードは: ### 011_counter.php ### <?php $fp=fopen("012_count.txt","r+");// 読み書きモードでオープン $n=fgets($fp); // 文字列の読み取り $n++; // カウントアップ echo $n,"人目"; // 表示 rewind($fp); // 読み書き位置を先頭に戻す fputs($fp,$n); // 書き込み fclose($fp); // ファイルを閉じる ?> ### 012_count.txt ### 0 ※このファイルは0のみで、この0の後には改行コードはありません これでhttp://localhost/php/011_counter.phpにアクセスすると 0 人目 が表示されます。 ただ、F5を押しても、他のサイトを見てまたアクセスしても変わりません。 012_count.txtの内容を3にすると、3 人目になりますが加算はされません。 テキストには「0の後に改行を入れると加算されない」とあるので、特に注意して改行を入れないようにしています。 OSはLinux Knoppix/Math2010です (Windows VistaにVMWare Playerを載せて、その上で走らせています)。 PCはTOSHIBAのSatelliteでメモリ4GB、ハードディスク250GBです。 PHP 5.2.11-1 with Suhosin-Patch 0.9.7 (cli)です。 ブラウザはIceweasel3.5.5です。 最初に書き換えの権限でエラーが出たので chmod -R 777 php chmod 777 012_count.txt も確実に行っています。 正しく加算されるようにするにはどうしたらよいのですか?

    • ベストアンサー
    • PHP
  • ランダムに数字を増やすカウンタ

    ランダムに増やす数字を変えられる「ずるい」カウンターのフリーCGIってないでしょうか? http://links.s1.xrea.com/cgi/x/count/count.htm にそれっぽいのがあったのですが、何故かエラーになってしまいます。 今までそれなりにカウンタやBBS・チャットの設置はできていたのですが、↑のCGIは使えませんでした。 よろしくお願いします。

  • カウンターの数値が上がらないです・・・

    初歩的な質問ですみません。アクセスカウンターを作っているのですが、カウントがあがりません。一応1と表示されるのですが増えませんし、count.txtみても0となっていて書き込まれてもいないようです。属性は666にしてあります。サイトは・・・ http://s1.muryo-de.etowns.net/~yuki/ です。 <?php $fp = fopen("count.txt", "r+"); $count = fgets($fp, 10); $count = $count + 1; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?> <div align="center"><p>あなたは <?php echo $count; ?> 人目のお客様です。</p></div> お願いします。m(__)m

    • ベストアンサー
    • PHP
  • 要素名がスペースを含む場合のjQueryのセレクタ

    jQueryのセレクタで、"btn01 bi"という要素内のspanを 指定したいと思っています。 しかし、以下の書き方ではダメなようです。 $('.btn01 bi span').click(function(){ … スペースが含まれるからなのはわかりますが、この場合はどう書けば 良いのでしょうか? ご教授ください。

  • PHPのアクセスカウンターのバグについてです!

    PHPを勉強しているものですが アクセスカウンターをネットで調べ自分なりに書いたのですが 日にちが変わるとトータル、今日、昨日が全く動かなくなります。 どこをどうすればいいのか教えていただけないでしょうか? お願いします。 $txt='counter.txt'; $fp=fopen($txt,'r+'); if($fp!==false){ if(flock($fp,LOCK_EX)){ $counter=fgets($fp);//トータル 今日 昨日 日付 $count=explode(' ',$counter); if(date('j') != $count[3]){ $count[3]=date('j'); $count[2]=$count[1]; $count[1]=0; } $count[0]++; $count[1]++; $counter=implode(' ',$count); rewind($fp); fputs($fp,$counter); flock($fp,LOCK_UN);} } fclose($fp); ちなみにバグはトータル→今日→昨日→日付の順です。 500 1 1 262625 のようになっていました。 よろしくです。

    • ベストアンサー
    • PHP
  • アクセスカウンターが更新されない(PHP)

    サーバーに count.txt というファイルを置いて 下記のようなPHPで更新するものを作りました。 <? $fp = @fopen("count.txt","r+") or die("ファイルが開けません");//読み書きモードでオープン flock($fp, LOCK_EX); $count = fgets($fp, 64); //64バイトorEOFまで取得、カウントアップ $count++; rewind($fp); //ポインタを先頭に、ロックして書き込み fputs($fp, $count); fclose($fp); //ファイルを閉じる echo $count; //カウンタ表示 ?> しかしながらカウンターは更新されません count.txt、の属性は666としてあります。 FTPを実行して 左右の窓の右側がサーバ側なので その中の、count.txt、を実行すると メモ帳で実行(ダブルクイック)し なかに書かれている数字を(たとえば100とあったものを101と書き換える)変更し 終了すると count.txtは更新されています、保存しますか と聞いてくるので、はい(Yes)で答えて、閉じ また開くと、100のままなのですが なにが原因か推定できないでしょうか? そのディレクトリー自体(ublic_htmlですが)の属性も書き込み可としても ダメでした。

    • 締切済み
    • PHP