繁体   English   中英

javascript函数未在第二次调用时定义

[英]javascript function is not defined on second call

<script type="text/javascript">
        function vote(element, val){
            prev_vote=0;
            vote = 100
            can_vote = element.find('.vote-permission').attr('value')
            alert(can_vote);
            if (can_vote=='yes'){
                if (prev_vote==0){ 
                    alert("previous vote is 0");
                    // user has not cast vote for image before
                    vote_score = vote + val;
                    element.find('.vote-count-post').text(vote_score);
                }
                else if (prev_vote != 0){
                    // user has cast a vote before
                    if (prev_vote == 1 && val == -1){
                        vote_score = vote - 2;
                        element.find('.vote-count-post').text(vote_score);
                    }
                    else if (prev_vote == -1 && val == 1){
                        vote_score = vote + 2;
                        element.find('.vote-count-post').text(vote_score);
                    }
                }
            }
        };

        $(document).on('click', '.votedown', function(e){
            alert($(e.target).prev().text());
            vote($(e.target).parent(), -1);
            alert('vote down is done');
            });

        $(document).on('click', '.voteup', function(e){
            $(e.target).css('background-position', '0 -222px');
            vote($(e.target).parent(), 1);
            alert('vote up is done');
            });
    </script>

上面的javascript函数是我正在实现的上下投票系统的支架。 第一次单击“向上投票”或“向下投票”按钮时,函数将按预期方式执行,并调用vote(),但是第二次单击时,未定义vote()函数。 有什么想法吗?

该函数正在使用

vote = 100

它替换了外部作用域中的vote变量的值(是该函数,现在是一个数字)。

您可以使用var关键字来阻止它,但是不要使用相同名称的两倍,因为它会破坏可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM