質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1273閲覧

JSの読み込み時の挙動確認

Chandler_Bing

総合スコア673

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

0クリップ

投稿2019/02/04 11:01

//このallowAjax = true;をコメントアウトするといいねできなくなる
とコメントアウトしておりますが、これについて質問があります。この理由としてはJSはこのページに来た段階で、JSの先頭にあるallowAjax = trueを読み込むがそれ以降は、ページ遷移がない限りはクリックイベントから読み込むので、コメントアウトすると永遠にallowAjaxがfalseであるためいいねができないということでしょうか。

JS

1<?php 2// カウント数取得関数 3function get_count($file) 4{ 5 $filename = 'data/'.$file.'.dat'; 6 $fp = @fopen($filename, 'r'); 7 if ($fp) { 8 $vote = fgets($fp, 9182); 9 } else { 10 $vote = 0; 11 } 12 return $vote; 13} 14?> 15<!DOCTYPE HTML> 16<html lang="ja"> 17 18<head> 19 <meta charset="utf-8"> 20 <meta name="viewport" content="width=device-width, initial-scale=1"> 21 <title>ajaxVote</title> 22 <link rel="stylesheet" href="style.css"> 23 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 24 <script> 25 $(function() { 26 allowAjax = true; 27 $('.btn_vote').click(function() { 28 if (allowAjax) { 29 allowAjax = false; 30 $(this).toggleClass('on'); 31 var id = $(this).attr('id'); 32 console.log(id); 33 //変数 = 条件式 ? trueの時の値 : falseの時の値 ; 34 $(this).hasClass('on') ? Vote(id, 'plus') : Vote(id, 'minus'); 35 } 36 }); 37 }); 38 39 function Vote(id, plus) { 40 cls = $('.' + id); 41 console.log(cls); 42 cls_num = Number(cls.html()); 43 console.log(cls_num); 44 count = plus == 'minus' ? cls_num - 1 : cls_num + 1; 45 $.post('vote.php', { 46 'file': id, 47 'count': count 48 }, function(data) { 49 if (data == 'success') cls.html(count); 50 setTimeout(function() { 51 //このallowAjax = true;をコメントアウトするといいねできなくなる 52 allowAjax = true; 53 }, 1000); 54 }); 55 } 56 </script> 57</head> 58 59<body> 60 61 <h1>ajaxVote</h1> 62 63 <article> 64 65 <section> 66 67 <p><img src="img/pic_01.jpg" width="100%" alt="綾北ダム"></p> 68 69 <div class="btn_area"> 70 71 <h2>綾北ダム</h2> 72 73 <p class="ico_heart vote_01"> 74 <?= get_count('vote_01') ?> 75 </p> 76 77 <p class="btn_vote" id="vote_01"></p> 78 79 </div><!-- /btn_area --> 80 81 </section> 82 83 <section> 84 85 <p><img src="img/pic_02.jpg" width="100%" alt="鶴田ダム"></p> 86 87 <div class="btn_area"> 88 89 <h2>鶴田ダム</h2> 90 <!-- 数字の横にある小さいハート --> 91 <p class="ico_heart vote_02"> 92 <?= get_count('vote_02') ?> 93 </p> 94 <!-- いいねに使うハート --> 95 <p class="btn_vote" id="vote_02"></p> 96 97 </div><!-- /btn_area --> 98 99 </section> 100 101 </article> 102 103 <footer> 104 105 <p>Copyright &copy; 2016<br> 106 <a href="//klutche.org">klutche.org</a> Allrights Reserved.</p> 107 108 </footer> 109 110</body> 111 112</html> 113
bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/02/04 14:03

いいね/悪いねは一人1回にできるということではないでしょうか? リロードされたら反応しそうだけど
guest

回答1

0

ベストアンサー

コメントアウトすると永遠にallowAjaxがfalseであるためいいねができないということでしょうか。

はい。そうです。
処理が終わるまで連打されても反応しないようにフラグを立て、
処理が完了後にフラグを戻して押せるようにしているので、
そのフラグをtrueにしない限り処理中とみなされボタンを押しても反応しません。

投稿2019/02/04 23:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問