我有一个包含以下 HTML 的 Rails View :
<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>
我正在尝试访问表中的 voteCount 单元格,但我不知道该怎么做。通常在 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";
}
最佳答案
尝试这样的事情。您可以使用rails传递id onclick,并且只需在JavaScript中使用常规的getElementById
:
<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;
}
关于javascript - 我如何从 Rails View 中 getElementById,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54838303/