Ciao, il titolo "Recuperare dati da un cella" mi pare non identifichi il reale problema. Infatti il problema non è quello di recuperare i dati dalle varie celle (che si può fare facilmente con qualche ciclo messo in croce) ma il fatto di avere dei dati con vari formati non esattamente numerici, per cui bisogna convertirli opportunamente per poterli poi sommare assieme.
Si tratta quindi di recuperare i valori, interpretarli e convertirli in numero per poterli quindi sommarli e, presumibilmente, riconvertirli nel relativo formato col quale sono già rappresentati sulla tabella. Giusto?
Bisogna capire se ti serve una cosa ad hoc, solo per questa tabella o comunque per tabelle con la stessa struttura, o se invece ti serve qualcosa di più riusabile, che puoi adoperare in altre situazioni simili ma magari con altri campi e dati con diversi altri formati. In quest'ultimo caso il tutto è un po' più complesso da organizzare.
Provo comunque a darti una soluzione che è una via di mezzo, poi vedi tu che fare.
codice:
<!DOCTYPE HTML>
<html>
<head>
<title>Esempio</title>
<meta charset="utf-8">
</head>
<body>
<table id="tuatabella" border=1>
<tr><th>Provincia</th> <th>Residenti</th> <th>%Italia</th> <th>Superficie (kmq)</th> <th>Densità per kmq</th> <th>Num. Comuni</th> <th>Sigla</th></tr>
<tr><td>Bergamo</td> <td>1.094.062</td> <td>1,8%</td> <td>2.723</td> <td>401,8</td> <td>244</td> <td>BG</td></tr>
<tr><td>Brescia</td> <td>1.247.192</td> <td>2,1%</td> <td>4.784</td> <td>260,7</td> <td>206</td> <td>BS</td></tr>
<tr><td>Como</td> <td>592.504</td> <td>1,0%</td> <td>1.288</td> <td>460,0</td> <td>160</td> <td>CO</td></tr>
<tr><td>Cremona</td> <td>361.812</td> <td>0,6%</td> <td>1.771</td> <td>204,3</td> <td>115</td> <td>CR</td></tr>
<tr><td>Lecco</td> <td>338.425</td> <td>0,6%</td> <td>816</td> <td>414,7</td> <td>90</td> <td>LC</td></tr>
<tr><td>Lodi</td> <td>225.798</td> <td>0,4%</td> <td>782</td> <td>288,7</td> <td>61</td> <td>LO</td></tr>
<tr><td>Mantova</td> <td>411.335</td> <td>0,7%</td> <td>2.339</td> <td>175,9</td> <td>70</td> <td>MN</td></tr>
<tr><td>Milano</td> <td>3.075.083</td> <td>5,2%</td> <td>1.579</td> <td>1.947,6</td> <td>134</td> <td>MI</td></tr>
<tr><td>Monza e della Brianza</td><td>850.684</td> <td>1,4%</td> <td>405</td> <td>2.097,9</td> <td>55</td> <td>MB</td></tr>
<tr><td>Pavia</td> <td>539.569</td> <td>0,9%</td> <td>2.965</td> <td>182,0</td> <td>190</td> <td>PV</td></tr>
<tr><td>Sondrio</td> <td>181.101</td> <td>0,3%</td> <td>3.212</td> <td>56,4</td> <td>78</td> <td>SO</td></tr>
<tr><td>Varese</td> <td>876.960</td> <td>1,5%</td> <td>1.199</td> <td>731,6</td> <td>141</td> <td>VA</td></tr>
<tr><td>Totale</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td></tr>
</table>
<script type="text/javascript">
function scriviTotali(e){
var t = document.getElementById(e)
, cc = t.rows[0].cells.length-1
, rr
, tot
;
while (--cc){
tot = 0;
rr = 0
while(++rr<t.rows.length-1){
tot += formattaNumero(t.rows[rr].cells[cc].innerText, 0);
}
t.rows[rr].cells[cc].innerText = formattaNumero(tot,[1,3,1,2,1][cc-1]);
}
}
function formattaNumero(val,format){ // formatta un numero in base ad una formattazione predefinita e lo restituisce
// format:
// 0 - standard (123456.78)
// 1 - intero con separatore migliaia (1.234.567)
// 2 - una cifra decimale con separatore migliaia (1.234.567,8)
// 3 - una cifra decimale con simbolo percentuale (12,3%)
//
val = isNaN(val) ? +(val.replace(/[^\d,]/g,'').replace(/,/g,'.')) : +val;
switch (format){
case 1: val = Math.round(val).toLocaleString('de-DE'); break;
case 2: val = val.toFixed(1).toLocaleString('de-DE'); break;
case 3: val = val.toFixed(1).toLocaleString('de-DE')+'%'; break;
}
return val;
}
scriviTotali("tuatabella")
</script>
</body>
</html>