Как бы я получитьElementById из Rails View - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть представление Rails со следующим HTML:

<tbody>
  <% @requests.each do |request| %>
     <tr data-request-id="<%= request.id %>">
       <td id="artist" style="text-align: center"><%= request.artist %></td>
       <td style="text-align: center"><%= request.title %></td>
       <td style="text-align: center" class="voteCount"><%= request.voteCount %></td>
       <td style="text-align: center"><%= button_to 'Vote', request_upvote_path(request.id), remote: true, method: :post, onclick: 'upVote()', class: 'upVote' %></td>
     </tr>
   <% end %>
</tbody>

Я пытаюсь получить доступ к ячейке voiceCount в таблице, но не знаю, как это сделать.Обычно в JS я бы использовал document.GetElementById или GetElementBysClassName

У меня есть метод, который увеличивает число voteCount на 1 при нажатии кнопки, который работает нормально, но эта функция JS должна увеличиватьправильный запрос.

Вот текущий JS:

function upVote() {
   var count = document.getElementsByClassName("voteCount")[0].innerHTML;
   count = parseInt(count);
   count = count + 1;
   count = count.toString();
   document.getElementsByClassName("voteCount")[0].innerHTML = count;
   document.getElementsByClassName("upVote")[0].disabled = "true";
}

1 Ответ

0 голосов
/ 23 февраля 2019

Попробуйте что-нибудь подобное.Вы можете передать идентификатор с помощью рельсов и просто использовать обычный getElementById в JavaScript:

<tbody>
  <% @requests.each do |request| %>
 <tr data-request-id="<%= request.id %>">
   <td id="artist" style="text-align: center"><%= request.artist %></td>
   <td style="text-align: center"><%= request.title %></td>
   <td style="text-align: center" id="voteCount<%= request.id %>"><%= request.voteCount %></td>
   <td style="text-align: center"><%= button_to 'Vote', request_upvote_path(request.id), remote: true, method: :post, onclick: "upVote(#{request.id})", class: 'upVote', id:"voteButton#{request.id}" %></td>
 </tr>
   <% end %>


function upVote(id) {
   var count = document.getElementById("voteCount" + id).innerHTML;
   count = parseInt(count);
   count = count + 1;
   count = count.toString();
   document.getElementById("voteCount" + id).innerHTML = count;
   document.getElementById("voteButton" + id).disabled = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...