2016-11-28 56 views
-2

編輯:只是爲了澄清,因爲zer00ne發現這是最初縮小的代碼,我「美化」,以便修改它。對於沒有儘早明確表示道歉。將if語句引入特定循環的正確方法?

原始for循環,即作品:

m = 0; 
for (k = b.header.length; m < k; m++) d.appendChild(p(e, "col", { 
    attr: { 
     min: m + 1, 
     max: m + 1, 
     width: N(b, m), 
     customWidth: 1 
    } 
})); 

我想要做什麼,但不工作:

m = 0; 
for (k = b.header.length; m < k; m++) d.appendChild(p(e, "col", { 
    if (m==6) { 
    attr: { 
     min: m + 1, 
     max: m + 1, 
     width: 100, 
     style: 2, 
     customWidth: 1 
    } 
    } else { 
    attr: { 
     min: m + 1, 
     max: m + 1, 
     width: N(b, m), 
     customWidth: 1 
    } 
    } 
})); 

我明白,如果語句是放錯了地方w.r.t.函數d.appendChild,但我不知道如何將for循環與函數分開,以便將if語句放在正確的位置。最後,稱爲循環/函數混合的這種風格是什麼?

幫助?

+4

*「最後,循環/函數混合的這種風格稱爲」* - 這叫做「維護夢魘」。堅持大多數風格指南推薦和寫'for(...){d ...}',帶有適當的換行符和縮進。那麼它應該變得更加明顯的把if語句放在哪裏。 – deceze

+0

這裏沒有雜交 – charlietfl

+0

Hybridwuh?你只是採取了一個縮小的代碼和美化它? – zer00ne

回答

4

這不是for循環,它是關於可能使用if內部對象文本。總之,沒有。

什麼你可能做的卻是延長基於條件的特定PARAM,像這樣:

var m = 0; 
var attr; 
for (var k = b.header.length; m < k; m++) { 
    attr = { 
    min: m + 1, 
    max: m + 1, 
    customWidth: 1 
    }; 
    if (m === 6) { 
    attr.style = 2; 
    attr.width = 100; 
    } 
    else { 
    attr.width = N(b, m); 
    } 
    d.appendChild(p(e, 'col', { attr: attr })); 
} 

這種方法是幹:這兩種情況共同的屬性被指定一次(所以它更容易修改他們)。

您是否只是一個單一的多樣PARAM工作,就不會有另一種方式來做到這一點 - 與三元:

attr = { 
    min: m + 1, 
    max: m + 1, 
    width: m === 6 ? 100 : N(b, m), 
    customWidth: 1 
}; 

不過,有一件事要考慮:什麼是6?任何讀者都不清楚 - 包括幾個月後(甚至幾周,這取決於代碼庫的大小)。

+0

它是爲excel文件生成xml的代碼。 '6'在這種情況下是指特定的列。 – h0dges

1

打開for循環,然後把裏面,如果,把使用appendChild if語句:

for (<stuff>) { 
    if (<expression>) { 
     d.appendChild(<stuff>); 
    } 
} 
0

你已經把如果條件作爲參數到d.appendChild。這是行不通的:

m = 0; 
for (k = b.header.length; m < k; m++) { 
    if (m==6) { 
     d.appendChild(p(e, "col", { 
     attr: { 
      min: m + 1, 
      max: m + 1, 
      width: 100, 
      style: 2, 
      customWidth: 1 
     } 
     })); 
    } else { 
     d.appendChild(p(e, "col", { 
     attr: { 
      min: m + 1, 
      max: m + 1, 
      width: N(b, m), 
      customWidth: 1 
     } 
     })); 
    } 
}