前提・実現したいこと
railsとJavaScriptを使いLINEのようなチャットアプリを作成しています。
送信したメッセージをclickした際にそのメッセージに対する削除ボタンを表示させることができるようにしたいです。
発生している問題・エラーメッセージ
今のところメッセージをクリックすると特定のメッセージのみの削除ボタンが表示させます。
該当のソースコード
ruby
1<% @messages.each do |message|%> 2 <% if user_signed_in? %> 3 <% if message.user_id == current_user.id %> 4 <div class="mycomment" > 5 <%= link_to '削除する', room_message_path(@room,message), method: :delete, class: "delete-btn hidden", id: "destroy"%> 6 <%= message.read ? '既読' : ' '%> 7 <%= l message.created_at, format: :short%> 8 <p id= 'mycomment' class='my'><%= message.content %></p> 9 </div> 10 <% else %> 11 <div class="fukidasi"> 12 <div class="faceicon"> 13 <%= image_tag @room.celeb.image, class: 'img' %> 14 </div> 15 <div class="chatting"> 16 <div class="says"> 17 <p><%= message.content %></p> 18 </div> 19 <div class='created_at'> 20 <%= l message.created_at, format: :short %> 21 </div> 22 </div> 23 </div> 24 <% end %>
javascript
1function pullDown(){ 2 3 const myComment = document.querySelectorAll(".my") 4 5 myComment.forEach(function(list) { 6 7 list.addEventListener('click', function(){ 8 const pullDownParent = document.getElementById("destroy") 9 if (pullDownParent.getAttribute("style") == "display:block;"){ 10 pullDownParent.removeAttribute("style", "display:block;") 11 } else { 12 pullDownParent.setAttribute("style", "display:block;") 13 } 14 15 }) 16 }) 17} 18 19document.addEventListener("turbolinks:load", pullDown)
今の状態で送信したメッセージをclickしたところ@messages.each doで始めに表示されたmessageの削除ボタンがどのmessageをclickしても表示されます。
jsの方ではclass=my要素のものを全て取得しforEachでどのmessageをclickしても削除ボタンが表示されるようにはしました。しかしここでclickしたmessageにたいして("style") == "display:block;")を追加できるようにしたいです。
試したこと
const pullDownParent = document.getElementById("destroy")のgetElementByIdをquerySelectorAll(".destroy")としてforEachとしてみたのですが結果は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
何かいい方法があれば教えていただきたいです!!
返信は1時間以内でできると思います!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/04 09:03 編集
2021/03/04 09:10
2021/03/04 10:07
2021/03/04 17:30
2021/03/05 00:03