我正在研究Java EE网络应用程序,并且还需要使用js。在app jsp页面上有两个按钮:其中一个是upVote和downVote。我想在按钮上调用'$ {upVote}'当同一用户第二次点击时,首先点击并调用'$ {downVote}'。 该过程的逻辑是确保每个用户每个问题可以投票一次。但我不知道为什么没有按预期工作。
所以我需要帮助解决这个问题。所有答案都很赞赏。
我的代码:
<c:url var="User" value="/AQ/User">
<c:param name="answerUserId" value="${question.USERID}" />
</c:url>
<c:url var="Question" value="/AQ/UpdateQuestion">
<c:param name="questionId" value="${question.ID}" />
</c:url>
<c:url var="upVote" value="/AQ/UpVoteQuestion">
<c:param name="questionId" value="${question.ID}" />
<c:param name="qUserId" value="${question.USERID}"/>
</c:url>
<c:url var="downVote" value="/AQ/DownVoteQuestion">
<c:param name="questionId" value="${question.ID}" />
<c:param name="qUserId" value="${question.USERID}"/>
</c:url>
<script type="text/javascript">
var voteCounter = 0;
var votedQuestion = 0;
function control() {
if('${sessionScope[userId]}' <= 0){window.location.href='SignIn'}
else if(voteCounter >= 1 && votedQuestion == '${question.ID}') {window.location='${downVote}';}
else{
voteCounter++;
votedQuestion = '${question.ID}';
window.location='${upVote}';
return false;
}
}
function reverse() {
if('${sessionScope[userId]}' <= 0){window.location.href='SignIn'}
else if(voteCounter >= 1 && votedQuestion == '${question.ID}') {window.location='${upVote}';}
else{
voteCounter++;
votedQuestion = '${question.ID}';
window.location='${downVote}';
return false;
}
}
</script>
还有我的按钮:
<pre style="max-width: 35px; margin-right: 10px;">
<input class="vote-img" type="image"
src="${pageContext.request.contextPath}/resources/images/upVote.png"
id="vote" onclick="control()"/>
<br>
<label style="float: left; margin-left: 18px;"><c:out value="${question.VOTE }" /></label>
<input class="vote-img" type="image"
src="${pageContext.request.contextPath}/resources/images/downVote.png"
id="vote" onclick="reverse()"/>
</pre>
答案 0 :(得分:0)
window.location正在刷新您的浏览器,这意味着每次都会再次加载js并且每次都会使用voteCounter == 0。