如何在jquery中使两个计数器按钮相互独立?

时间:2017-07-24 13:53:07

标签: javascript jquery html

实际上我一直在努力制作'喜欢'点击时点击增加或减少计数的按钮,我面临的问题是,一个按钮对其他按钮的干扰。这是我的一个按钮的html代码:

<button class="btn btn-default buttonattr"style="font-family:Pangolin"   onclick="myhit1(\''+this["post"]+'\',\''+this["id"]+'\',\''+this["love"]+'\');myclick()">
     <span  class="glyphicon glyphicon-heart fa-lg active1"></span> Love
</button>;

其中myhit()myclick()是javascript函数,单击此按钮时调用。这是我的javascript函数:

var toAdd=1;var newValue=0;
 var overall=1;var pvalue=0;
 function myhit(post,id,love){

 oldValue=parseInt(love);



 if(toAdd>0){

 newValue=oldValue+toAdd;
 }
 else{

 newValue= overall + toAdd;
 }
 pvalue=pvalue+toAdd;
 toAdd*=-1;
 overall=newValue;


 $.post('porthome4_.php',{post1:post,id1:id,love:newValue,plove:pvalue},function(info){});

 }

我做了更多&#39;喜欢&#39;每个帖子的按钮。问题出在例如。如果我点击一个按钮,计数器从0-> 1状态增加,但如果点击另一个按钮,其状态变化是荒谬的,我知道原因是toAdd变量状态从+1变为-1因为按钮上每次点击它的状态都会改变,如果只有一个按钮,它就可以正常工作了  对于多个按钮,这不会工作...有人可以建议我更好的方法来解决这个问题,或者我的功能代码的更改将更加受到重视。如果有人帮忙会很高兴。谢谢你。

2 个答案:

答案 0 :(得分:2)

<button class="btn btn-default buttonattr"style="font-family:Pangolin" data-state="1" onclick="myhit1(\''+this["post"]+'\',\''+this["id"]+'\',\''+this["love"]+'\');myclick()">
    <span  class="glyphicon glyphicon-heart fa-lg active1"></span> Love
</button>

var newValue=0;
var overall=1;
var pvalue=0;

function myhit(post,id,love)
{
    oldValue = parseInt(love);
    var toAdd = parseInt($(this).attr("data-state"));
    if(toAdd>0)
    {
        newValue=oldValue+toAdd;
    }
    else
    {
        newValue= overall + toAdd;
    }
    pvalue=pvalue+toAdd;
    toAdd*=-1;
    overall=newValue;

    $(this).attr("data-state",toAdd);

    $.post('porthome4_.php',{post1:post,id1:id,love:newValue,plove:pvalue},function(info){});
}

答案 1 :(得分:1)

您可以为每个按钮使用单独的状态变量。将data-state属性设置为按钮,然后您可以使用此属性来运行$(this).data("data-state");,您可以在每次单击按钮时获取并设置此值。