さて、私のブログで投票システムを構築しています。ここにあるstackoverflowのものとよく似ています。システムはブログロールの最初の投稿で正常に機能しますが、他のすべての投稿をクリックしても画像は変更されませんが、実際の投票プロセスはまだ実行されています。
何故ですか?どんな助けでも素晴らしいでしょう!
これが私のJSです:
function upvote(id)
{
sender = new XMLHttpRequest();
if(document.getElementById("upvoteimg").src.indexOf("voted") == -1) //have they already voted up?
{
document.getElementById("upvoteimg").src = "assets/upvoted.png"; // change to upvoted
sender.open("GET","/like/index/" + id ,true);
sender.send();
document.getElementById("likes").innerHTML = parseInt(document.getElementById("likes").innerHTML) +1; //update #
}
else
{
document.getElementById("upvoteimg").src = "assets/upvote.png"; //change to not upvoted
sender.open("GET","/like/index/" + id ,true);
sender.send()
document.getElementById("likes").innerHTML = parseInt(document.getElementById("likes").innerHTML) - 1; //update #
}
}
function downvote(id)
{
sender = new XMLHttpRequest();
if(document.getElementById("downvoteimg").src.indexOf("voted") == -1) //have they already downvoted?
{
document.getElementById("downvoteimg").src = "assets/downvoted.png"; //change to downvoted
sender.open("GET","/like/down/" + id ,true);
sender.send()
document.getElementById("likes").innerHTML = parseInt(document.getElementById("likes").innerHTML) - 1; //update #
}
else
{
document.getElementById("downvoteimg").src = "assets/downvote.png"; //change to not downvoted
sender.open("GET","/like/down/" + id ,true);
sender.send()
document.getElementById("likes").innerHTML = parseInt(document.getElementById("likes").innerHTML) +1; //update #
}
}
そして、これが私の見解のボタンです:
<!-- Voting System -->
<div id="post-vote">
<% #DownVote %>
<%if user_signed_in?%>
<%if Dislikes.where(:user_id => current_user.id, :article_id =>a.id).size == 0%>
<%= image_tag("downvote.png", "onclick" => "downvote(#{a.id})", "id" => "downvoteimg") %>
<%else%>
<%= image_tag("downvoted.png", "onclick" => "downvote(#{a.id})", "id" => "downvoteimg") %>
<%end%>
<%else%>
<%= image_tag("downvote.png", "onclick" => "alert('You must login to vote.')", "id" => "downvoteimg") %>
<%end%>
<% #TheNumber %>
<span id="likes" class="vote-count"><%= a.likes.size - Dislikes.where(:article_id =>a.id).size%></span>
<% #UpVote %>
<%if user_signed_in?%>
<%if !a.likes.include?(current_user)%>
<%= image_tag("upvote.png", "id" => "upvoteimg", "onclick" => "upvote(#{a.id})") %>
<%else%>
<%= image_tag("upvoted.png", "id" => "upvoteimg", "onclick" => "upvote(#{a.id})") %>
<%end%>
<%else%>
<%= image_tag("upvote.png", "id" => "upvoteimg", "onclick" => "alert('You must login to vote.')") %>
<%end%>
</div>