Eccoci qua.
codice:
XHTML
<form action="tuoscript.xxx">
<fieldset id="elenco_taglie"><legend>Tutte le taglie</legend>
<fieldset><legend>Taglia 1</legend>
<ul>[*]
<label for="taglia_1_1">Taglia 1</label>
<input id="taglia_1_1" name="taglia_1_1" />
[*]
<label for="taglia_1_2">Taglia 2</label>
<input id="taglia_1_2" name="taglia_1_2" />
[/list]
<label for="risultato_1">Il risultato è</label>
<input id="risultato_1" name="risultato_1" readonly="readonly" />
</p>
</fieldset>
<fieldset><legend>Taglia 2</legend>
<ul>[*]
<label for="taglia_2_1">Taglia 1</label>
<input id="taglia_2_1" name="taglia_2_1" />
[*]
<label for="taglia_2_2">Taglia 2</label>
<input id="taglia_2_2" name="taglia_2_2" />
[/list]
<label for="risultato_2">Il risultato è</label>
<input id="risultato_2" name="risultato_2" readonly="readonly" />
</p>
</fieldset>
</fieldset>
<fieldset>
<legend>Risultato totale</legend>
<label for="risultato_totale">Il risultato totale è</label>
<input id="risultato_totale" name="risultato_totale" readonly="readonly" />
</fieldset>
</form>
Javascript
window.onload = function()
{
// Prepariamo tutti gli 'attori' dello script
var elenco_taglie = document.getElementById('elenco_taglie')
var taglie = elenco_taglie.getElementsByTagName('fieldset')
var risultati_parziali = new Array()
for (var i = 0; i < taglie.length; i++)
{
var parziale = taglie.item(i).getElementsByTagName('p').item(0).getElementsByTagName('input').item(0)
risultati_parziali.push(parziale)
}
var risultato_totale = document.getElementById('risultato_totale')
// Calcoliamo e scriviamo i risultati parziali
function scrivi_risultato_parziale(collezione)
{
var taglie_inputs = collezione.getElementsByTagName('ul').item(0).getElementsByTagName('input')
var taglie_risultato = collezione.getElementsByTagName('p').item(0).getElementsByTagName('input').item(0)
var totale = 0
for (var i = 0; i < taglie_inputs.length; i++)
{
var valore = parseInt(taglie_inputs.item(i).value)
if ( !isNaN(valore) )
{
totale += parseInt(taglie_inputs.item(i).value)
}
}
taglie_risultato.value = totale
}
// Calcoliamo e scriviamo il risultato totale
function scrivi_risultato_totale()
{
var totale = 0
for (var i = 0; i < risultati_parziali.length; i++)
{
var valore = parseInt(risultati_parziali[i].value)
if ( !isNaN(valore) )
{
totale += valore
}
}
risultato_totale.value = totale
}
// Attribuiamo le funzioni di somma parziali e totale a tutti gli input
for (var j = 0; j < taglie.length; j++)
{
taglie.item(j).onkeyup = function()
{
scrivi_risultato_parziale(this)
scrivi_risultato_totale()
}
}
}
Forse ho scritto con troppa foga e magari ho sorvolato sull'eleganza formale di alcune parti di codice. Questo, tuttavia, è un problema risolvibile in un secondo momento. Prova intanto a vedere se risponde alle tue necessità (aggiungendo anche qualche nuova famiglia di taglie nel mark-up) e soprattutto se funziona (con il Blocco Note qui non ho una percezione molto ordinata del codice).