无法获取要正确添加的javascript添加运算符

无法获取要正确添加的javascript添加运算符,javascript,jquery,ajax,operators,Javascript,Jquery,Ajax,Operators,我有一个按钮,每次我点击它,我希望它添加5到数据属性。出于某种原因,我很难弄明白这一点。我试过几种不同的方法,但似乎都不管用 var i = 5; $(this).attr('data-count', ++i); 但由于某种原因,它只会触发一次,如果我单击它,它会将数据属性设置为6,但如果我再次单击它,它将保持为6 然后,我尝试了普通的javascript add操作符,但它的操作不正确 var x = 5; var y = count; var newcount = x + y; $(thi

我有一个按钮,每次我点击它,我希望它添加5到数据属性。出于某种原因,我很难弄明白这一点。我试过几种不同的方法,但似乎都不管用

var i = 5;
$(this).attr('data-count', ++i);
但由于某种原因,它只会触发一次,如果我单击它,它会将数据属性设置为6,但如果我再次单击它,它将保持为6

然后,我尝试了普通的javascript add操作符,但它的操作不正确

var x = 5;
var y = count;
var newcount = x + y;
$(this).attr('data-count', newcount);
这个的输出是50,然后再次单击它是550,依此类推

我肯定我错过了什么,但我不确定我做错了什么

我真的很希望第一个例子能起作用,因为我想计算一下,因为我正在添加到一个现有的列表中,因为我的完整代码如下

$( document ).on( "click", "#showButton", function() {
    var q = $(this).attr('data-q');
    var type = $(this).attr('data-type');
    var count = $(this).attr('data-count');
    $(this).text('More');
    var i = 5;
    $(this).attr('data-count', ++i);
    $.ajax({ 
       dataType: 'html',
       data: '',
       type: 'POST',
       url : '',
       success: function(response) {
          $('#responseContainer').append(response);
       }
    });
});
  • “问题”
    初始化:
    $this.data('count',0)

    onclick:
    $this=$(this)$this.data('count',$this.data('count')+5)
  • “问题”
    newcount=x++y
  • 原因是当您使用
    attr
    而不是
    data
    时,y是一个字符串

    提示:您可以使用对象作为数据,例如:

    $(this).data('prop',{count:0})$(此).数据('prop')。计数+=5

    需要记住的事情很少

    a.
    jquery
    识别以
    数据开始的属性,因此为了提取它,您可以简单地使用
    .data('attr')
    而不是
    .attr('data-attr')

    b.为了增加一个值,需要将其附加到其现有值中,因此需要:
    $(this.data('count',$(this.data('count')+(++i))


    示例:

    因为每次单击它时,它都会将值设置为5,然后递增。将
    i
    设置为当前值。这个问题很难由JavaScript的加法运算符引起。每次将
    i
    初始化为5,然后用
    ++i
    覆盖
    数据计数中的任何值,该值始终为6。当然,每次都保持为6,用新的
    6
    显式覆盖以前的
    6
    。我很好奇,你怎么可能在浏览代码时想到除了6以外的任何其他值都可以被赋值。
    var i=5
    行每次运行,而不是一次。
    var i=Number($(this).attr('data-count'))| 5感谢数字克里斯,我将代码更改为var I=计数$(此).attr('data-count',++i+5);如果你想把这个作为一个答案,我会检查它是否正确。
    
    $( document ).on( "click", "#showButton", function() {
        var count = $(this).data('count');
        $(this).text('More');
        var i = 5;
        $(this).data('count', $(this).data('count') + (++i));
        alert($(this).data('count'));
        });