2013-12-02 4 views
0

У меня есть скрипт для загрузки данных с помощью функции обратного вызова, как:Пропустить один и тот же элемент, добавленный из цикла

for(i = 0; i < allposts.length; i++){ 
    .... 
    if ((i >= 0) && (i < 3)) { 
     a += '<li><a href="'+link+'">'+post-title+'</a></li>'; 
    } 
} 
list = a; 
document.getElementById('portfolio-list').innerHTML += list; 

Когда на конце петли, она добавит 3 сообщения. Это значит, каждый цикл мы имеем как:

<li><a href="link1">title1</a></li> 
<li><a href="link2">title2</a></li> 
<li><a href="link3">title3</a></li> 

Для 2 петли (с помощью += list), например, у меня есть:

<li><a href="link1">title1</a></li> 
<li><a href="link2">title2</a></li> 
<li><a href="link3">title3</a></li> 

<li><a href="link2">title2</a></li> 
<li><a href="link4">title4</a></li> 
<li><a href="link5">title4</a></li> 

Вы можете увидеть: link2 is repeated. Я хочу поймать на каждом цикле и сломаться, если он повторяется.

Это означает, что я, как результат:

<li><a href="link1">title1</a></li> 
<li><a href="link2">title2</a></li> 
<li><a href="link3">title3</a></li> 

<li><a href="link4">title4</a></li> 
<li><a href="link5">title5</a></li> 

Как я могу сделать это с помощью JavaScript?

+1

Где 'c' переменную ? что вызывает печать ссылки1 и т. д. – doptimusprime

+0

Сохраните уже показанные ссылки в массиве и проверьте, не содержится ли новая ссылка в этом массиве перед добавлением к выходу. – mcserep

+0

@dbasic: извините. это не массив. обновлено. –

ответ

1

попробовать это, я не знаю, как вы обновляете c переменной

var temp =[]; 
for(i = 0; i < allposts.length; i++){ 
    .... 
    if ((i >= 0) && (i < 3)) { 
     if(temp.indexOf(link) == -1) 
     { 
      a += '<li><a href="'+link+'">'+post-title+'</a></li>'; 
      temp.push(link); 
     } 

    } 
} 
+0

Ссылка улавливается и автоматически изменяется с i. Не ссылка [c] ... –

1
var links = {}; 
for(i = 0; i < allposts.length; i++){ 
    .... 
    if ((i >= 0) && (i < 3) && !links[link]) { 
     a += '<li><a href="'+link+'">'+post-title+'</a></li>'; 
     links[link] = true; 
    } 
} 
3

Вот шаблон я думал в моем комментарии выше:

var shownLinks = []; 
for(i = 0; i < allposts.length; i++){ 
    .... 
    if ((i >= 0) && (i < 3)) { 
     // Only show a link, if it wasn't before 
     if(shownLinks.indexOf(link) == -1) { 
      a += '<li><a href="'+link+'">'+post-title+'</a></li>'; 
      // Add the link to the array 
      shownLinks.push(link); 
     } 
    } 
} 
list = a; 
document.getElementById('portfolio-list').innerHTML += list; 
+0

может работать. подождите мой чек. благодаря –

Смежные вопросы