我可能错过了一些非常简单的东西,但是,我知道。我无法找到它。我的代码如下:
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
。但它并没有。哪里是我的错?
答案 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例)
count = count++;
返回当前值,然后会增加该数字。 count = ++count
将返回递增的数字。count++;
只会增加数字。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