2012-10-20 153 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]); 
      } 

     } 

    }