Simple ++不会增加数字

时间:2014-09-15 07:46:15

标签: javascript jquery

我可能错过了一些非常简单的东西,但是,我知道。我无法找到它。我的代码如下:

    var count = 0;

    $(document).on('click', button, function() {
        var originalLink = button.attr('href'),
            elems,
            count = parseInt(originalLink.match(/\d+$/)[0]),
            cleanlink = originalLink.replace(/[0-9]/g, ''),
            link = cleanlink+''+count;

        $.get(link, function(data) {
            elems = $(data).find(elements);
            $(elems).hide();
            $(elems).appendTo(container);
        }).done(function() {
            count = count++;
            var offsetButton = $(button).offset().top;
            $('html, body').animate({
                scrollTop: offsetButton
            },500);

            if($('.masonry').length) {
                container.masonry('reload');
                container.masonry('reloadItems');
            };

            $(elems).fadeIn();
        });

        alert(count);

        return false;
    });

每次点击都会增加count。但它并没有。哪里是我的错?

5 个答案:

答案 0 :(得分:5)

替换此

count = count++;

通过

count++;

通过自己的等效count++;来执行count = count + 1;

执行count = count++;时与count = count;相同,因为count ++在递增之前返回count的值

您还要通过执行此操作count = parseInt(originalLink.match(/\d+$/)[0]),

重新计算每次点击次数

您已修复代码

var count = 0;

$(document).on('click', button, function() {
    var originalLink = button.attr('href'),
        elems,
        cleanlink = originalLink.replace(/[0-9]/g, ''),
        link = cleanlink+''+count;

    $.get(link, function(data) {
        elems = $(data).find(elements);
        $(elems).hide();
        $(elems).appendTo(container);
    }).done(function() {
        count++;
        var offsetButton = $(button).offset().top;
        $('html, body').animate({
            scrollTop: offsetButton
        },500);

        if($('.masonry').length) {
            container.masonry('reload');
            container.masonry('reloadItems');
        };

        $(elems).fadeIn();
        alert(count);

    });


    return false;
});

答案 1 :(得分:1)

++是后缀时,它会在递增变量之前返回其值,而不是

您应该在没有明确指定的情况下使用它。

count++;

或者,如果++是前缀,它将起作用(因为它将首先返回值)。但是,这对其他开发人员来说看起来很奇怪(由于显式赋值是多余的)。

答案 2 :(得分:0)

正如其他人所说:(3例)

  1. count = count++;返回当前值,然后会增加该数字。
  2. count = ++count将返回递增的数字。
  3. 执行count++;只会增加数字。
  4. some fiddle tests to show the behavior

    var count=0;
    $('#incr1').click(function() {
        count=++count; //why
        $('#res').text(count);    
    });
    $('#incr2').click(function() {
        count=count++; //wrong
        $('#res').text(count);    
    });
    $('#incr3').click(function() {
        count++; //better
        $('#res').text(count);    
    });
    

答案 3 :(得分:0)

只需使用count++代替count = count++

即可

答案 4 :(得分:-1)

说明:

i=i++; //post increment operator

i=0   // intialization
i=i++ // stores value of i and then increments
i=0   //current value of i;

试试这个:

i=++i; or i=i+1