2012-09-18 87 views
1
<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函数是我正在实施的向上和向下投票系统的脚手架。当第一次对upvote或downvote按钮进行点击时,函数按照预期的方式使用vote()调用,但在第二次点击时,vote()函数被说成没有被定义。任何想法为什么?javascript函数未在第二次调用时定义

回答

6

的功能与

vote = 100 

它取代在外侧范围vote变量的值删除本身(状态的功能,现在是一个数)。

您可以用var关键字阻止它,但不应该使用两次相同的名称,因为它会打破可读性。

+0

谢谢你。这几乎解决了它。但只是说。范围规则相当不友善。 – cobie

相关问题