2012-10-20 122 views
4

我试图做一个数组的循环,排序内容和每个创建2个值的div。javascript循环奇数/偶数组

尝试了很多东西,但我无法弄清楚我需要做什么。

这就是我需要做的:循环一个数组并创建div。每个div应该有2个数值。就像这样:

<div id="1">content, content 2</div> 
<div id="2">content 3, content 4</div> 
<div id="3">content 5, content 6</div> 
<div id="4">content 7</div> 

所以我有数组是这样的:

var myArray = ['content', 'content 2', 'content 3', 'content 4', 'content 5', 'content 6', 'content 7']; 

而且我循环是这样的:

for(var i=0; i<=myArray.length; i++){ 

    if(currentDiv == 1){ 
     $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
      console.log(myArray[i]); 
    } 

    if(currentDiv == 2){ 
      $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
      console.log(myArray[i]); 
      $('#container').append("</div>"); 
    } 



    console.log(currendDivID); 

    if(currentDiv == 3){ 
     currendDivID ++; 
     $('#container').append("<div id=\"s" + currendDivID + "\">"); 
     console.log(myArray[i]); 
     $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
    } 

    if(currentDiv == 4){ 
     console.log(myArray[i]); 
     $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
     $('#container').append("</div>"); 
    } 



    console.log(currendDivID); 

    if(currentDiv == 5){ 
     currendDivID++; 
     $('#container').append("<div id=\"s" + currendDivID + "\">"); 
     console.log(myArray[i]); 
     $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
    } 

    if(currentDiv == 6){ 
     if(myArray[i] == undefined){ 
      return; 
     } 
     console.log(myArray[i]); 
     $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
     $('#container').append("</div>"); 
    } 


    if(currentDiv == 7){ 
     currendDivID++; 
      if(myArray[i] == undefined){ 
       $('#container').append("</div>"); 
       return; 
      } 
     $('#container').append("<div id=\"s" + currendDivID + "\">"); 
     console.log(myArray[i]); 
     $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>"); 
    } 

    currentDiv ++; 

} 

这工作得很好,但我需要硬编码每个div计数,然后填充。 有没有更好的方法来做到这一点,而不是像我在currentDiv var那样对元素的数量进行编码?

感谢

+0

在比较你的例子中,数组中的值是顺序的,它们应该如何进入div - 是这种情况吗? – kmfk

回答

3

您可以使用%模运算,找出分割后的奇数和偶数,因为它给你剩下。如果除以2和余数为零,那么它甚至如果余数是1,那么它是奇数。

for(var i=0; i<=myArray.length; i++){ 
{  
    if(currentDiv % 2 == 0){ 

    } 
    else{ 

    } 
} 

你可以用我currentDiv循环增量的变量,也是我认为循环计数器是做一个额外的迭代,我已经通过启动loop from i=1调整。

for(var i=1; i<=myArray.length; i++){ 
{  
    if(i % 2 == 0){ 
     $('#s' + i + '').append("<p>"+myArray[i]+"</p>"); 
     console.log(myArray[i]);  
    } 
    else{ 
     console.log(myArray[i]); 
     $('#s'+ i + '').append("<p>"+myArray[i]+"</p>"); 
     $('#container').append("</div>"); 
    } 
} 
+0

谢谢。我试过,但看起来总是追加到第一个div。会尝试不同的东西。 –

+0

我认为问题是由于$('#s'+ currendDivID +''),因为currendDivID在解决方案中没有增加。将其更改为$('#s'+ i +'')将解决问题。请试一试。我已经更新了我的答案。 – Adil

0

使用模运算符。

所以currentDiv % 2 == 0即使
currentDiv % 2 == 1用于奇数

它做什么是除以2,其余(http://en.wikipedia.org/wiki/Euclidean_division)

+0

明白了。谢谢你。只需要添加\t \t \t currendDivID ++;在else语句中 –

0
var arr=['content','content2','content3','content4','content5']; 

for(var i=0;i<=arrlen;i++){ 

     if(i%2==0){ 

      if(i!=(arrlen-1)){ 
       if(i!=arrlen){ 
        console.log(arr[i]+" "+arr[i+1]); 
       }else{ 
        break; 
       } 
      }else{ 

       console.log(arr[i]); 
      } 

     } 

    }