Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    8

    Tabella con contenuti ordinabili

    Ciao a tutti.
    Non sono una grande esperta di javascript e per questo avrei bisogno di un aiutino per risolvere un problema che mi sembra comunque semplice.

    Ho creato una pagina con una tabella i cui contenuti si possono ordinare per titolo/divisione/data. Solo che lo script iniziale trovato in rete e da me usato, non prevedeva l'odinamento per data e quindi lo fa, ma in maniera sbagliata.

    Chi di voi mi aiuta? La data deve avere un formato tipo gg/mm/aa.

    Ecco il codice:
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    	<title>Tabella Ordinabile</title>
    
    </head>
    
    <body marginheight=0 marginwidth=0 topmargin=0 leftmargin=0 onload="makeControl();showInfo();">
    
    
    <script language="javascript">
    var sortInd=0;
    var movie=new Array()
    movie[0]=new Array("Kill Bill
    <span class='tableDescr'>un film veramente eccezzzzionale</span>", "Utilities", "23/01/05", "vai");
    movie[1]=new Array("Shrek 2", "Finance", "01/02/05");
    movie[2]=new Array("Full Metal Jacket", "Consumer Goods", "18/08/05");
    movie[3]=new Array("Saving Private Ryan", "Pippo", "31/07/04");
    movie[4]=new Array("Shallow Hal", "Pluto", "01/07/05");
    movie[5]=new Array("A River Runs Through It", "Paperino","31/12/04");
    
    var movInfo=new Array()
    for(var i=0;i<6;i++){
    movInfo[i]=movie[i];
    for(var j=0;j<3;j++){
    movInfo[i][j]=movie[i][j];
    }
    }
    function makeControl() {
    var str='<table width="100%" cellspacing="1" bgcolor="#ACACE3" border="0"><tr><td width="50%">Titolo/descrizione ^</td>';
    str+='<td width="25%">Industry/Divisione ^</TD>';
    str+='<td width="25%">Data ^</td></tr></table>';
    if (document.getElementById) {
    document.getElementById("sortPref").innerHTML=str;
    }
    if (document.layers) {
    document.sortPref.document.write(str);
    document.sortPref.document.close()
    }
    if(document.all){
    document.all.sortPref.innerHTML=str;}
    }
    function showInfo() {
    var str='<table width="100%" border=0 cellpadding=5 cellspacing=0>';
    for(var row in movInfo) {
    str+='<tr>';
    for (var col in movInfo[row]) {
    str+='<td align="left" >'+movInfo[row][col]+'</td>';
    }
    str+='</tr>';
    }
    str+='<tr><td width="50%">[img]img/vuoto.gif[/img]</td><td width="25%">[img]img/vuoto.gif[/img]</td><td width="20%">[img]img/vuoto.gif[/img]</td><td width="5%">[img]img/vuoto.gif[/img]</td></tr></table>';
    if (document.getElementById) {
    document.getElementById("table").innerHTML=str;
    }
    if (document.layers) {
    document.table.document.write(str);
    document.table.document.close();
    }
    if(document.all){
    document.all.table.innerHTML=str;}
    }
    function arrange(num) {
    sortInd=Number(num);
    movInfo.sort(dataType);
    return showInfo();
    }
    function dataType(a,b) {
    if (isNaN(Date(a[sortInd]))) {
    if (a[sortInd] < b[sortInd]) return -1;
    if (a[sortInd] > b[sortInd]) return 1;
     return 0;}
    return b[sortInd]-a[sortInd];
    }
    </script>
    
    
    	
    	<table cellspacing="0" cellpadding="0" border="0" width=100%>
    
    			
    		<tr>
    			<td valign="top"><div class="txtbold2">Documenti disponibili (clicca sulle freccine per modificarne l'ordine)</div>
    
    <div id="sortPref" class="label">
    </div>
    <div id="table" class="tableItem">
    </div></td>
    		</tr>
    		
    	</table>
    
    
    </body>
    
    
    
    </html>
    Grazie in anticipo a chi mi risponderà!!
    ciao
    ing.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    8

    Accidenti, nessuno mi aiuta????

    Tra tutti non c'è un'anima pia che mi sa aiutare??

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367

    Re: Accidenti, nessuno mi aiuta????

    Originariamente inviato da icas
    Tra tutti non c'è un'anima pia che mi sa aiutare??
    Ciao icas,

    sono un'anima pia

    chi decide l'ordinamento è la funzione dataType... per le date bisogna convertire le stringhe in oggetti Date
    codice:
    function dataType(a,b) {
    	var redata = /\d{2}\/\d{2}\/\d{2}/
    	if (redata.test(a[sortInd])){
    		var arr=a[sortInd].split('/')
    		var data1 = new Date(2000+parseInt(arr[2],10),parseInt(arr[1],10)-1,parseInt(arr[0],10))
    		var arr=b[sortInd].split('/')
    		var data2 = new Date(2000+parseInt(arr[2],10),parseInt(arr[1],10)-1,parseInt(arr[0],10))
    		if (data1<data2) return -1;
    		if (data1>data2) return 1;
    	}
    	else{
    		if (isNaN(Date(a[sortInd]))) {
    			if (a[sortInd] < b[sortInd]) return -1;
    			if (a[sortInd] > b[sortInd]) return 1;
    			return 0;
    		}
    		return b[sortInd]-a[sortInd];
    	}
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    8
    Ciao willybit-anima-pia,

    ho provato col tuo codice ma dà un apio di errori alla riga 8 e alla 73...

    :master:
    icas

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    hai qualcosa online da vedere? Hai fatto copia e incolla dal forum? Meglio se quoti il mio messaggio e prelevi il codice dalla textarea... famme sape'

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    8

    GRAZIE!!!!!!!!!!

    Ho fatto come hai detto. Ora funza a meraviglia!
    Grazie mille. Così è perfetto!

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    tutto è bene quel che finisce bene

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    8

    per Willibit!! anomalia!!

    Ciao Willybit,

    adesso lo script funziona ma ha una piccola anomalia.

    questo è il mio array finale:

    var sortInd=0;
    var movie=new Array()
    movie[0]=new Array("Diapason Reporting System", "A", "01/02/04", "vai");
    movie[1]=new Array("Diapason Corporate", "A", "01/02/04", "vai");
    movie[2]=new Array("Diapason Business", "A", "01/12/04", "vai");
    movie[3]=new Array("Diapason", "A", "01/10/04", "vai");
    movie[4]=new Array("Diapason Maintenance", "A", "01/01/00", "vai");
    movie[5]=new Array("Diapason DDM", "A", "01/04/00", "vai");
    movie[6]=new Array("Diapason Quality", "A", "01/02/03", "vai");
    movie[7]=new Array("Utenze SIC4U", "A", "01/09/03", "vai");
    movie[8]=new Array("Diapason DNE", "A", "01/03/03", "vai");
    movie[9]=new Array("Diapason Federated Warehouse", "A", "01/07/02", "vai");
    movie[10]=new Array("Sales Central", "A", "01/01/03", "vai");

    Così com'è, dà un errore. Ma ho notato che se alla prima riga, movie [0], nella data ci metto un numero diverso da 01, es. 02/02/04 o 12/02/04, torna a funzionare.

    Come mai? si può risolvere?
    grazie in anticipo...

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao icas,

    l'errore viene fuori se ci sono date uguali pekké mi scordai di mettere quella condizione nella funzione di ordinamento
    codice:
    function dataType(a,b) {
    	var redata = /\d{2}\/\d{2}\/\d{2}/
    	if (redata.test(a[sortInd])){
    		var arr=a[sortInd].split('/')
    		var data1 = new Date(2000+parseInt(arr[2],10),parseInt(arr[1],10)-1,parseInt(arr[0],10))
    		var arr=b[sortInd].split('/')
    		var data2 = new Date(2000+parseInt(arr[2],10),parseInt(arr[1],10)-1,parseInt(arr[0],10))
    		if (data1<data2) return -1;
    		if (data1>data2) return 1;
    		return 0;
    	}
    	else{
    		if (isNaN(Date(a[sortInd]))) {
    			if (a[sortInd] < b[sortInd]) return -1;
    			if (a[sortInd] > b[sortInd]) return 1;
    			return 0;
    		}
    		return b[sortInd]-a[sortInd];
    	}
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    8
    ok, risolto.

    Grazie ancora. Non so come farei senza "anime pie" come te!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.