为什么这段代码不起作用(js函数)?

时间:2017-03-28 02:34:55

标签: javascript jsp jstl

我正在研究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>

1 个答案:

答案 0 :(得分:0)

window.location正在刷新您的浏览器,这意味着每次都会再次加载js并且每次都会使用voteCounter == 0。