Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Conteggio items precedenti a quello cliccato in una lista

    salve a tutti.
    ho una lista (ul) che contiene un numero variabile di items (li) ordinati secondo un campo "ordering" (int), che non è necessariamente seriale (la sequenza può essere e.g. 1-3-4-7-10 ecc.).
    so come ricavare in js il numero totale degli items.
    quello che mi servirebbe, e che non so fare, è:
    - al clic di un item, ricavare il numero, cioè la somma, degli items precedenti (oppure successivi) a quello cliccato.
    qualche suggerimento?
    grazie e buon lavoro a tutti.
    ruggero
    mayerweb

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Conteggio items precedenti a quello cliccato in una lista

    Originariamente inviato da mayerlink
    so come ricavare in js il numero totale degli items.
    Se hai gia' un riferimento alla collezione non ti rimane che scorrerla e fermarti quando arrivi al nodo che corrisponde a quello cliccato.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3

    Conteggio items precedenti a quello cliccato in una lista

    grazie per la risposta, br!
    ma ho delle difficoltà, non sono un gran chè con js, per cui ti sottopongo un esempio:
    codice:
    <div id=”alfa”>
    <ul>[*]item1[*]item2[*]item3[*]item4[*]item5[*]item6[/list]
    </div>
    io arrivo fin qui:
    codice:
    function myfunction() {
    li_items = document.getElementById('alfa').getElementsByTagName('li');
    li_items_numero = li_items.length; }
    che mi restituisce correttamente “6”.
    ora, se clicco su e.g. “item5”, vorrei che mi restituisse “4”, oppure anche “5”, ovvero il numero di item fino a quello cliccato, compreso o meno.
    questo non riesco a farlo, credo si debba usare la keyword “this”, ma non riesco a buttar giù un codice.
    mi potresti risolvere questo esempio?
    ti sarei gratissimo
    ruggero
    mayerweb

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: Conteggio items precedenti a quello cliccato in una lista

    codice:
    <div id=”alfa”>
    <ul>
    <li onclick="myfunction(0)">item1
    <li onclick="myfunction(1)">item2
    <li onclick="myfunction(2)">item3[*]item4[*]item5[*]item6[/list]
    </div>
    codice:
    function myfunction(li) {
    li_items = document.getElementById('alfa').getElementsByTagName('li');
    li_items_numero = li_items.length; 
    for(i=0;i<li_items_numero;i++){
    if(i==li){
    //fai quello che vuoi ad esempio cambi colore di sfondo
    li_items[i].style.backgroundColor='red';
    }else{
    //elimino il colore di sfondo negli altri elenchi
    li_items[i].style.backgroundColor='';
    }
    }
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5

    Conteggio items precedenti a quello cliccato in una lista

    grazie Andrea
    ispirandomi al tuo codice ho trovato la soluzione, non molto elegante ma efficace.
    in pratica assegno un ID incrementale ad ogni "li" via javascript, quindi con un paio di piccole funzioni mi faccio restituire lo ID dell'item corrente, cioè di quello cliccato: a questo punto dispongo di un numero che rappresenta la somma degli items dal primo a quello cliccato compreso, ed il gioco è fatto!
    con quel numero posso fare le manipolazioni che mi servono.

    se qualcuno è interessato fornirò i codici.

    grazie ancora ad andrea e br1!

    buon lavoro a tutti.
    ruggero.
    mayerweb

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.