2014-05-07 165 views
0

我试图在每次发生循环时从revlength中减去。例如,如果有2'Google用户的帖子,然后从距离减去2从变量中减去一个数字

这是我试过的。

var revlength = place.reviews.length; 
if(place.reviews[index].author_name == 'A Google User') { 
    $("#revnum").html(revlength--); 
} 

在添加到脚本,代码不适合

$.each(place.reviews, function (index, value) { 
     if (place.reviews[index].text.length != 0) { 
      if (place.reviews[index].text.length == 0) { 
       $("#revnum").html(--place.reviews.length); 
      } 
      if (place.reviews[index].author_name == 'A Google User') { 
       $("#revnum").html(--place.reviews.length); 
       var imgid = '<img src="img/gplus.gif" width="50" height="50">'; 
      } else { 
       $("#revnum").html(revlength); 
       var imgid = '<img src="img/user.gif" width="50" height="50">'; 
      } 
+1

哪里是循环? – Sumeet

+0

你不改变'place.reviews.length;'所以如果这是一个循环,那么'revlength'每次只会有相同的值。它看起来像你需要'--place.reviews.length;'。你应该展示更多的代码。 – jfriend00

+0

循环开始line2,例如我有2'谷歌用户的帖子 – user3206729

回答

1

我想这是你想要什么:

var revlength = $.grep(place.reviews, function (val) { 
    return val.author_name !== 'A Google User'; 
}).length; 
// alert(revlength); 
// console.log(revlength); 
3

工作试试这个..

变化

$("#revnum").html(revlength--);//you are doing post-decrement 

$("#revnum").html(--revlength);//you need to change it pre-decrement. 

如果其他部分是正确的,那么它会确定。

说明:

--I和我 - 其中的位置 - 确定之前或值被用于后一个是否被减去。

如果i--值将在递减之前使用。 如果--i值将在递减后使用。

+0

你能解释一下这个区别吗? –

+0

后减量(例如 - revlength--)将首先给出revlength的值,然后减小revlength的值。预先减量(例如:--revlength)将首先减小旋转长度的值,然后给出递减值。 –

+0

有道理。但你的答案中的最后一行需要修复。 –

-1

试试这个,

var revlength = place.reviews.length; 
revlength = parseInt(revlength.toString()); 
if(place.reviews[index].author_name == 'A Google User') { 
revlength--; 
$("#revnum").html(revlength); 
} 
+0

请解释为什么您将数字转换为字符串并再次转换为数字? –

+0

这确保您的变量为整数,然后您可以轻松地对该变量执行递增和递减操作 –

1

把我的评论(这似乎已工作)到一个答案:

你需要真正递减place.reviews.length

if(place.reviews[index].author_name == 'A Google User') { 
    $("#revnum").html(place.reviews.length--); 
} 

你原来的代码只是递减一个临时变量revlength这是不持久的,因为你只是重新从每次place.reviews.length变量。因此place.reviews.length从来没有减少。


通过解释,也许你的印象是,后做事:

var revlength = place.reviews.length; 

这时候你再那样:

revlength-- 

,这也将递减place.reviews.length,但事实并非如此。 revlength是一个新变量,其值设置为place.reviews.length,但是当您执行revlength--时,该变量仅更改该变量并且对place.reviews.length没有任何影响。所以,对于递减值持续存在,您需要递减place.reviews.length

+0

如果'place.reviews'是一个数组,那么这段代码是不是会截断数组? –

+0

@SalmanA - 是的,如果它是一个数组,它会截断数组。 OP必须展示更多的代码才能知道哪种解决方案最好。我认为这只是一个数字。如果它是一个数组,并且他们不想更改数组,那么他们需要将一次循环外的长度变为另一个变量,并只减少该变量。我们尽可能地利用问题中共享的部分背景来做到最好。 – jfriend00

+0

@SalmanA - 这个答案的要点是他们需要减少在循环外部初始化的东西,而不是在循环内部初始化的东西,因为减少它们在循环内部的东西不会持久,因为它们只是覆盖递减的值下一次通过循环。 – jfriend00