2014-02-18 87 views
0

我在html表格的主行下添加了一些子行,這取決於哪個主行按鈕被按下了。下面是一些代碼:想要javascript循環

if (document.getElementById("hdnSub0")) { 
    roz0 = document.getElementById("hdnSub0").value || 0; 
} 
    ... 
if (document.getElementById("hdnSub10")) { 
    roz10 = document.getElementById("hdnSub10").value || 0; 
} 
nroz0 = parseInt(roz0, 10); 
    ... 
nroz10 = parseInt(roz10, 10); 
if (intMainRow == 0) { 
    i = nroz0 + 2 
}; 
    ... 
if (intMainRow == 10) { 
    i = nroz0 + 2 + nroz1 + 1 + nroz2 + 1 + nroz3 + 1 + nroz4 + 1 + nroz5 + 1 + nroz6 + 1 + nroz7 + 1 + nroz8 + 1 + nroz9 + 1 + nroz10 + 1 
}; 
row = table.insertRow(i); 

我想編寫一個循環尤其是對IF(intMainRow ...),但我只是把它弄清楚尚未能。

+1

你真的,真的,真的,真的* *需要在代碼的可讀性工作。選擇一個風格指南(任何風格指南)並堅持下去。 – qubyte

+0

確實。我現在專注於代碼可寫性,這會自動提高可讀性。 –

回答

2

所以使用一個循環!

考慮getElementById("hdbSub" + i),其中i是循環變量從0..10遞增。然後您可以使用循環(或中間數組)去0..x,具體取決於intMainRow的值。

例如:

// Because nroz0 + 2, but nrozOther + 1 
// (You could also encode with an if/condition in the loop, but I 
// feel like showing it this way.) 
var incrs = [2,1,1,1,1,1,1,1,1,1,1]; 

// Running total (I use i/j/k only for loops.) 
var total = 0; 

// Will loop [0, intMainRow], an inclusive range, because of "<=". 
// We loop once for each "field" and add the result in total. 
for (var i = 0; i <= intMainRow; i++) { 
    var elm = document.getElementById("hdnSub" + i); 
    if (elm) { 
    // Add the value to the total along with 
    // the increment (+2/+1) for this index. 
    // (Each loop "adds" the next value to the equation 
    // written manually in the the original code.) 
    var v = parseInt(elm.value, 10) || 0; 
    total += v + incrs[i]; 
    } 
} 

row = table.insertRow(total); 
+0

精美的作品! –