2017-08-02 175 views
0

我有一个简单的循环,通过JSON数据循环并计算有多少个对象。对于每第四个对象,我想将1加到一个计数器上,以便在技术上将对象分组为4个。如果索引是4的倍数加1计数器 - JQUERY

我看起来似乎没有正确,它每次都会返回相同的值。也许别人可能知道。

如果您检查console.log();你可以看到postCount保持不变。

如果需要,我已经包含一个指向JSON文件的链接。您将只需更改Ajax调用的URL。

下面请参阅代码 -

CODE -

var imgTitle; 
 
var imgLink; 
 

 
$.ajax({ 
 
    type: 'GET' 
 
    , url: 'http://www.capetownetc.com/api/get_category_posts/?slug=news' 
 
    , data: { 
 
     get_param: 'value' 
 
    } 
 
    , dataType: 'jsonp' 
 
    , success: function(data) { 
 
    
 
     $.each(data.posts, function(i){ 
 
      imgTitle = data.posts[i].title; 
 
      imgLink = data.posts[i].thumbnail_images.medium.url; 
 
      console.log(imgTitle); 
 
      
 
      var postCount = 0; 
 
      
 
      if((i + 1) % 4 === 0){ 
 
       postCount = postCount+= 1; 
 
       console.log(postCount); 
 
      } 
 

 
     }); 
 
     
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

JSON Data File

+1

p取代

postCount = postCount+= 1; 

ut'var postCount = 0;''.each'循环之外 –

+0

哇,我是一个非常愚蠢的人。是因为它每次都重置变量吗? – Darian

+0

是的,正是这样,你每次都重置它 - 很高兴它帮助 –

回答

0

按我的意见之外:

var postCount = 0;$.each循环之前......有它里面被重置它在每一个“每个”

正如意见中也提到,你可以用

postCount++; 
2

postCount被分配为0每次。你需要把这个循环之外:

var imgTitle; 
 
var imgLink; 
 

 
$.ajax({ 
 
    type: 'GET', 
 
    url: 'https://www.capetownetc.com/api/get_category_posts/?slug=news', 
 
    data: { 
 
    get_param: 'value' 
 
    }, 
 
    dataType: 'jsonp', 
 
    success: function(data) { 
 
    var postCount = 0; 
 
    $.each(data.posts, function(i) { 
 
     imgTitle = data.posts[i].title; 
 
     imgLink = data.posts[i].thumbnail_images.medium.url; 
 
     console.log(imgTitle); 
 
     if ((i + 1) % 4 === 0) { 
 
     postCount++; 
 
     console.log(postCount); 
 
     } 
 
    }); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

0

由于达伦·斯威尼 -

放VAR postCount = 0;在$。每个循环