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

    sintassi js pass name value

    Ciao a tutti,

    ho un problema con un javascript, che credo sia facile per chi conosce la sintassi... io non purtroppo non la conosco e sto impazzendo!

    Vi spiego...
    ho questo script:

    codice:
    jQuery(document).ready(function() {
       
        jQuery('.toggle').hide();
       
        jQuery('a.slidetoggle').click(function() {
        jQuery('.toggle').slideToggle(400);
            return false;
        });
    })
    Vorrei passare dei valori dinamicamente dal mio html, come si fa con document.getElementById(id),
    ma vorrei passare invece dell'id, il parametro "name", che varierà ciclicamente ed avrà valore numerico (5, 11, ..., n)
    servirà a differenziare le classi da:
    codice:
    ('.toggle') e ('a.slidetoggle')
    a
    codice:
    ('.toggle5') e ('a.slidetoggle5')
    ('.toggle11') e ('a.slidetoggle11')
    ('.togglen') e ('a.slidetogglen')
    questo è il mio html:
    Spero di essermi spiegata.

    Thanx.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    non ho capito di preciso che vuoi fare, tuttavia se vuoi prendere un attributo qualunque da un qualunque elemento tramite jquery basta fare

    $(".elemento").attr("nomeattributo");

    quindi se ad esempio ti serve l'attributo name dal tag <a class='toggle' name='5'>

    codice:
    $('.toggle').click(
    function(){
    alert($(this).attr('name'));
    }
    )

  3. #3
    Ciao,

    praticamente devo nascondere dei link, ma avendo tutti la medesima classe, toggle, devo identificarli con un altro parametro per evitare che si chiudano/aprano tutti indistintamente.

    Credo che il tuo script sia ciò che mi serve.
    Basta inserire il parametro nella mia funzione?
    Ma come lo richiamo nell'html?
    Scusa, sono domande stupide me ne rendo conto, ma non conosco la sintassi js.

    codice:
    jQuery(document).ready(function() {
       
        jQuery($('.toggle').attr('name')).hide();
       
        jQuery($('a.slidetoggle').attr('name')).click(function() {
        jQuery($('.toggle').attr('name')).slideToggle(400);
            return false;
        });
    })
    Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    No lo script di prima serviva a reperire il valore dell'attributo name da un tag... quindi non è quello che ti serve.

    Perchè non usi l'attributo id che serve proprio a identificare in maniera univoca ogni elemento del dom?

    Detto questo, vedo comunque di venirti incontro.

    Tu vuoi nascondere un elemento in base al valore dell'attributo name, quindi ti interessa sapere come strutturare il selettore affinchè vada a pescare l'elemento con l'attributo name posto a un certo valore.

    Supponendo che il valore di name debba essere 'pincopallino':

    $(".toggle [name=pincopallino]").hide();

    Se puoi seguire il consiglio di sopra e cioè di utilizzare l'id, supponendo che l'id debba essere 'pincopallino', basterebbe fare:

    $("#pincopallino").hide();

  5. #5
    Il punto è che i link di cui ti parlavo e che saranno mostrati/nascosti hanno tutti questa struttura:
    ' id='titoloChild'>child-name";

    mentre i link che li comandano questa:
    ' id='titoloParent'>parent-name";

    Non posso usare gli id perché sono già impegnati in altre funzioni e poi essendo univoci non fanno al caso mio

    Se usassi la funzione così com'è senza differenziare le classi numericamente, al click del primo slidetoggle, chiamiamolo Parent, aprirei/chiuderei tutti i sotto link, io invece devo aprire solo quelli in relazione a se stesso; i figli.
    Come se fosse un menù con i sotto-menù.

    Quindi il valore che li identificherà sarà uguale per tutti i child che hanno parentela con il link genitore.

    genitore(5) genitore(3)
    -figlio(5) -figlio(3)
    -figlio(5) -figlio(3)
    -figlio(5)

    La funzione invece è perfetta quindi dovrei solo implementare questo valore dinamico.
    L'esempio del pincopallino è come immaginavo dovesse essere, ma come faccio a definire pincopallino come valore numerico e, soprattutto, dinamico?

    Ho provato questo
    jQuery("a.slidetoggle").getAttribute('name').click (function() { ... }
    ma non funziona...
    e nemmeno
    var n = document.getElementsByTagName("a").getAttribute("n ame");
    o
    var n = document.getElementsByClass(".slidetoggle").getAtt ribute("name");

    alert(n);


    Grazie per l'aiuto.

  6. #6
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    collection of Objects likewise an Array

    Hai controllato che PHP ti stampi effettivamente il Valore di NAME ? (Vedi il codice sorgente della pagina a Browser).
    Originariamente inviato da Defly
    la sintassi... io non purtroppo non la conosco e sto impazzendo!
    Non ho jquery sulla punta delle dita e non posso aiutarti in quell' ambito, ma ti offro volentieri un esempio per vedere come si lavora con .getElementsByName il quale raccoglie una collection degli Elementi con un dato NAME e per questo va accompagnato da un indice: per determinare il singolo Elemento.
    Spero questo possa tornarti utile per correggere le tue verifiche, e per prendere una prima dimestichezza col Linguaggio.
    codice:
    <html><head>
    <script>
    
    function francesca(){
     var messaggio = document.getElementsByName("3")[0].value;
     alert(messaggio);
     };
    </script>
    </head>
    
    <body onload='francesca();'>
    
    <input name="3" value="ciao, sono Enzo"            type="text">
    <input name="3" value="io invece sono Paola, ciao" type="text">
    
    </body></html>
    Con [0] ti risponde Enzo, con [1] ti risponde Paola
    Si inizia contando da zero come negli Array.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    allora devi usare entrambe i consigli

    reperisci l'attributo name del nodo slidetoggle e lo metti nella variabile n, quindi vai a nascondere tutti i nodi toggle con lo stesso nome nel seguente modo:

    var n = $(".slidetoggle").attr("name");
    $(".toggle [name="+n+"]").hide();

  8. #8
    okay ragazzi,
    sto iniziando a capire un po' come funziona js.

    Programmo in php, quindi mi rendo conto di come dovrebbe essere la struttura. Purtroppo, come ho già detto, non conosco la sintassi del js, ma sto imparando...

    Grazie Enzaccio per la breve, ma efficace guida, mi ha chiarito alcuni concetti.
    Domattina proverò ad applicarla ai miei link.

    E grazie a te, Longilineo. Purtroppo però ho testato lo script e non funziona...
    sicuramente sbaglierò ad implementarlo nella mia funzione o forse si genera qualche conflitto...
    Proverò anche questo domattina con > lucidità!!!

    Per ora vi ringrazio entrambi... e vado a nanna!!!

    Notte.

  9. #9
    Ciao,
    ho fatto un piccolo passo avanti e, come immaginavo, era abbastanza semplice.

    Spero sia corretto... a me funziona, ma ci sono arrivata a tentoni quindi attendo una vostra conferma.

    codice:
    ' id='titoloParent' onclick='getValue(this);'>parent-name";
    
    function getValue(control) {
    	var name = control.name;
    	alert(name);
    }
    In questo modo riesco a prendere i valori del nome. Ora però devo implementare il valore name all'interno di questa funzione, ma non so come fare...

    codice:
    jQuery(document).ready(function() {
       
        jQuery('.toggle').hide();
       
        jQuery('a.slidetoggle').click(function() {
        jQuery('.toggle').slideToggle(400);
            return false;
        });
    })
    Avete qualche suggerimento?

    Grazie.

  10. #10
    Ho risolto!
    Mi son dovuta studiare tutto jquery, ma ho capito come funziona.

    Era davvero semplicissimo e Longilineo, il tuo suggerimento era giusto sin dal primo momento, ma non funzionava perché non leggeva lo script con $...

    Comunque, se a qualcuno dovesse interessare la soluzione è la seguente:

    codice:
    jQuery(document).ready(function() {
    
        jQuery('.toggle').hide();
       
        jQuery('a.slidetoggle').click(function() {
        var name = this.name;
        jQuery('.toggle[name='+name+']').slideToggle(400);
            return false;
        });
    
    });


    Grazie comunque per il supporto.



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.