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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Q&A

解決済

1回答

1753閲覧

チャットサービスの発言一つ一つにいいねボタンをつけたが、どのボタンを押しても一番上のボタンのいいね数しか増やすことができない

yahret45

総合スコア41

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

0グッド

1クリップ

投稿2016/08/12 10:31

チャット機能に「いいねボタン」をつけたいと考えております。
ボタンを押すとカウントアップする機能はつけることができましたが、

個別のメッセージに自動生成で割り振られているmessage.idをボタンの方にも割り振ることができればそれぞれの値がつくと思いますが、
やり方をご教授頂けますと幸いです。

<実現したい機能>
ボタンを押す度にいいね数が1増えるボタンをチャットの発言一つ一つに挿入し、いいねの数をデータベースに入れる。

<現状>
ボタンは表示されるものの、どのボタンを押しても一番上の
いいね数がカウントアップされてしまう

javascript

1var goods = 0; 2 function iine(){ 3 var googids = document.getElementById("goodid"); 4 goods++; 5 googids.value = "いいね" + goods; 6 7(中略) 8 9function renderMessage(message) { 10 var message_html = '<p class="texts">' + escapeHTML(message.value.content) + '</p>'; 11 var date_html = ''; 12 if (message.value.date) { 13 date_html = '<p class="point-date">'+'<input id="goodid" type="button" name="good" value="いいね" onclick="iine()">' + escapeHTML(new Date(message.value.date).toLocaleString()) + '</p>'; 14 } 15 $("#" + last_message).after('<div id="' + message.id + '" class="post">' + message_html + date_html + '</div>'); 16 last_message = message.id; 17 }

HTML

1 <div class="thread-container"> 2 <div class="messages-container"> 3 <div class="messages"> 4 <div class="message"> 5 <img class="icon" src=""> 6 <div class="texts"> 7 <div class="info"> 8 <div class="user"></div> 9 <div class="time"></div> 10 </div> 11 <div class="text"></div> 12 <div id="messages" class="content"> 13 <div id="dummy"></div> 14 15 </div> 16 </div> 17 </div> 18 </div> 19 <textarea class="message-form" name="" id="content" maxlength="240" placeholder="Enterで投稿"></textarea> 20 21 </div> 22 </div>

ご教授のほど、よろしくお願いします

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

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

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

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

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

guest

回答1

0

ベストアンサー

問題点は id="goodid" が同じページ上に複数あることです。idは同じページ上に重複なしの一意の値を設定する必要があります。そのため、getElementById("goodid") は先頭のID のみを返します。


実装の全体像がわかりませんが、個別のクリックは下記のように取得出来ます。(最近は onclick ではなく addEventListener でイベントを付けるが、全体像がわからないので・・・)

JavaScript

1'<input data-id="' + message.id + '" type="button" name="good" value="いいね" onclick="iine(this)">'

JavaScript

1function iine( input ) { 2 var googids = input.getAttribute( 'data-id' ); // message.id 3 console.log( googids ); 4 5 /* 6 不明。特に個別にカウントする機構がないように見受けられる 7 */ 8} 9```**動くサンプル:**[https://jsfiddle.net/ewb7n92t/](https://jsfiddle.net/ewb7n92t/)

投稿2016/08/12 15:33

kei344

総合スコア69407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問