2014-02-18 4 views
0

Я добавляю подписи под основной строкой таблицы html в зависимости от того, какая кнопка основной строки нажата. Вот некоторые из кода:Мне нравится javascript loop

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); 

Я хотел бы написать цикл особенно для если (intMainRow ...), но я просто не смог это выяснить.

+1

Вы действительно, действительно, действительно, * действительно * должны работать на читаемость кода. Выберите руководство по стилю (любое руководство по стилю) и придерживайтесь его. – qubyte

+0

Действительно. В настоящее время я сосредоточен на написании кода, который автоматически улучшит читаемость. –

ответ

2

So a loop!

Рассмотрите 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

Работает красиво! –

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