Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: Ordinare lista

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    29

    Ordinare lista

    Buongiorno a tutti, qualcuno è in grado di creare una funzione in javascript che mi ordini i prodotti di una lista (sotto c'è un estratto) in base al prezzo (data-prezzo)? Ho provato svariate volte ma non riesco a trovare una soluzione

    Vi ringrazio

    <ul id="lista1">
    <li data-prezzo="25" data-qualita="8">Prodotto1</li>
    <li data-prezzo="9" data-qualita="9">Prodotto2</li>
    <li data-prezzo="17" data-qualita="6">Prodotto3</li>
    </ul>

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Dutch Visualizza il messaggio
    Buongiorno a tutti, qualcuno è in grado di creare una funzione in javascript che mi ordini i prodotti di una lista (sotto c'è un estratto) in base al prezzo (data-prezzo)? Ho provato svariate volte ma non riesco a trovare una soluzione
    Java non c'entra niente, semmai Javascript. Comunque se usi JQuery è abbastanza facile. Se usi direttamente il DOM, si può sicuramente fare ma meno facilmente/brevemente.
    Chiarisci cosa puoi/vuoi usare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    29
    JQuery

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Dutch Visualizza il messaggio
    JQuery
    Bene, te lo descrivo a parole: selezioni tutti i <li>, sul set fai un sort() a cui passi una function che riceve 2 elementi (es. a e b) per volta e devi dire se uno è maggiore/minore/uguale all'altro. Per prendere il prezzo fai es. Number($(a).data('prezzo'))
    . Dopo il sort, fai un appendTo() per rimettere tutto nella lista1.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    29
    Così intendi?


    function PrezzoCrescente()
    {
    $('.lista1 li').sort(sort_li).appendTo('.lista1');
    function sort_li(a, b) {
    return Number($(b).data('prezzo')) < Number($(a).data('prezzo')) ;
    }
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Dutch Visualizza il messaggio
    Così intendi?
    Sì, grosso modo. A parte che: lista1 l'hai messo come "id", quindi #lista1, non .lista1
    Hai fatto solo una comparazione per minore. Non è sbagliato in modo assoluto (io preferisco sempre fare i 3 casi). Comunque b < a vuol dire che stai ordinando in senso decrescente (deduco che volevi crescente, "gira" la comparazione).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    29
    Ok grazie mille, intanto mi serve solo provare se funziona, poi la miglioro con i tre casi.
    L'ho provata, ma non funziona, sbaglio qualcosa? Magari nel collegamento?

    <a href="javascript:PrezzoCrescente()">Prezzo Crescente</a>

    <SCRIPT>
    function PrezzoCrescente()
    {
    $('#lista1 li').sort(sort_li).appendTo('#lista1');
    function sort_li(a, b) {
    return Number($(a).data('prezzo')) < Number($(b).data('prezzo')) ;
    }
    }
    </SCRIPT>

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Dutch Visualizza il messaggio
    L'ho provata, ma non funziona, sbaglio qualcosa?
    Ah già scusa, non l'ho notato subito prima: la function di comparazione NON deve restituire un boolean. Deve restituire <0, 0 o >0 a seconda dei casi (ecco perché generalmente si fanno i 3 casi).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    29
    Quindi come posso fare la comparazione?

    Con cosa sostituisco la riga :
    return Number($(a).data('prezzo')) < Number($(b).data('prezzo'))
    per non dare un boolean?

    (Ti avviso che sono un principiante, quindi scusa se ti faccio tutte queste domande)

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Dutch Visualizza il messaggio
    Quindi come posso fare la comparazione?
    Puoi mettere i due prezzi in 2 var, poi usi l'operatore "condizionale" (2 volte in cascata) per fare i 3 casi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.