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
    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.
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

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

  4. #4
    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.
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

  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
    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).
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

  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
    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).
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

  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
    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.
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

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