Penso anch' io che la tabella voluta dovrebbe farsi emettere dal server; ma facciamolo pure in javascript, che potrà semmai aiutare il ragionamento per meditare un programma lato-server.
Ogni singolo film viene fornito dunque come singolo articolo, col suo genere di appartenenza (gruppo), il titolo e una descrizione; ne viene formata una tabella.
Sapendo come questa tabella di origine è strutturata, in righe e celle, possiamo farla "scansionare" da javascript che ci restituirà delle collection; nell' esempio sono le:
var gruppi = document.getElementById("origine").getElementsByTa gName("th");
var films = document.getElementById("origine").getElementsByTa gName("td");
e coi loro contenuti .innerHTML (ri-)popolare un Array (multidimensionale); e poi farla riscrivere, scorrendo l' Array ottenuto.
Nel mezzo ci sta un ciclo for con if-statement che verifica se l' innerHTML delle TH di volta in volta copiato e preso in esame, è già stato messo in qualche articolo del costruendo Array; se si trovi cioè alla posizione neworder[i][0] dove i è un numero che cambia ad ogni "colpo" del ciclo FOR.
Se cambi l' ultima riga dello SCRIPT:codice:<html> <head><title></title> <script type="text/javascript"> function riscrivi(){ var neworder = new Array(); var n=-1; var f=0; var newtab=''; var already; var gruppi = document.getElementById("origine").getElementsByTagName("th"); var films = document.getElementById("origine").getElementsByTagName("td"); var tds = 0; for(g=0; g<gruppi.length; g++){ already = false; for(i=0; i<neworder.length; i++){ if(gruppi[g].innerHTML == neworder[i][0]){ already = true; n=i; }; }; if(already == true){ f=neworder[n][1].length; neworder[n][1][f]=films[tds].innerHTML; tds++; neworder[n][2][f]=films[tds].innerHTML; tds++; }else{ n=neworder.length; f=0; neworder[n]=new Array(); neworder[n][0]=gruppi[g].innerHTML; neworder[n][1]=new Array(); neworder[n][1][f]=films[tds].innerHTML; tds++; neworder[n][2]=new Array(); neworder[n][2][f]=films[tds].innerHTML; tds++; }; }; for(g=0; g<neworder.length; g++){ cells=''; for(f=0; f<neworder[g][1].length; f++){ cells=cells + '<tr valign="top"><td>' + neworder[g][1][f] + '</td><td>' + neworder[g][2][f] + '<\/td><\/tr>'; }; newtab=newtab + '<tr>' + '<th colspan="2" bgcolor="#DDDDFF" align="left">' + neworder[g][0] + '<\/th>' + '<\/tr>' + cells; }; document.getElementById("finale").innerHTML='<div style="border: 1px solid black;"><table border="0" bgcolor="#FFFFDD">' + newtab + '<\/table><\/div>'; } </script> </head> <body> <table border="1"><tr valign="top"> <td> <table id="origine"><tr> <th colspan="2" align="left">Film d'azione</th> </tr><tr valign="top"> <td>La Battaglia delle Ardenne</td><td>(Ambientato in Seconda Guerra Mondiale)</td> </tr><tr> <th colspan="2" align="left">Film d'azione</th> </tr><tr valign="top"> <td>Io che vado a fare la spesa</td><td>('na faticaccia ...)</td> </tr><tr> <th colspan="2" align="left">Film d'epoca</th> </tr><tr valign="top"> <td>La mia Prima Comunione</td><td>(Com' ero magro da bimbo !!!)</td> </tr><tr> <th colspan="2" align="left">Film d'azione</th> </tr><tr valign="top"> <td>La presa della Pastiglia</td><td>(L' inizio di una Rivoluzione terapeutica)</td> </tr><tr> <th colspan="2" align="left">Film d'epoca</th> </tr><tr valign="top"> <td>Ladri di tricicli</td><td>(del regista che si giocava tutto)</td> </tr><tr> <th colspan="2" align="left">Film comici</th> </tr><tr valign="top"> <td>Stanlio e Ollio</td><td>(Un Classico in Bianco e Nero)</td> </tr> </table> </td> <td><input value="raggruppa" type="button" onclick="riscrivi()"></td> <td id="finale">xxx</td> </tr> </table> </body> </html>
document.getElementById("finale").innerHTML='<div style=" (ecc ...)
in:
document.getElementById("origine").innerHTML='<div style=" (ecc ...)
l' azione sovrascriverà la tabella originaria,

Rispondi quotando