Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Variabile oggetto

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    98

    Variabile oggetto

    Salve,
    In una pagina html richiamo nell'evento onChange di una combo una mia funzione javascript.

    Il problema è che devo gestire tale combo da javascript e per far ciò uso:

    document.nomeform.nomecombo

    il problema è che io vorrei creare una funzione da richiamare più volte per gestire ogni volta una combo diversa, quindi vorrei passare alla funzione una variabile contenente il nome del combo del tipo:

    onChange="MiaFunzione('NomeCombo');"

    [...]

    function MiaFunzione(comboname) {
    document.nomeform.comboname
    }

    e stessa cosa con il nome del form... il problema è che ciò che gli passo viene considerato come stringa e quindi il codice non mi funziona, come faccio a fargli capire che si tratta di un oggetto?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    document.mioForm.elements[variabileNomeCombo]

    Valuta l'opportunita' di usare this che rappresenta l'oggetto chiamante:
    codice:
    onchange="funzione(this)"
    
    
    function funzione(obj) {
      tuoForm = obj.form;
      valore = obj.options[obj.selectedIndex].value;
      ...
      ...
    }
    ciao
    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
    Puoi utilizzare la proprietà associativa della array dell' oggetto.

    In realtà, infatti, ogni form per javascript non costituisce altro che una array (o collezione, nel linguaggio alternativo usato in questo caso) dove ogni elemento successivo è una altra array finchè non finiscono gli attributi degli oggetti.

    Mi spiego meglio.

    Ogni document regge una array di form (che tu ne abbia nella pagina una mille o nessuna è irrilevante): i suoi elementi sono indicizzati nella array sulla base del nome dell' oggetto, o dell' indice numerico della posizione nella pagina. Infatti se tu hai una form potresti dire:
    document.forms[0]
    che sarebbe equivalente a
    document.nomedellaformqui

    Il fatto è, che essendo una array, potresti anche dire
    document['nomeformqui']
    (nota gli apici, a significare che è una... stringa: trattasi dunque di array associativa!) e vedresti che ti accede all' oggetto!

    Anche le form sono array a loro volta, e reggono come loro elementi i vari campi. Per cui se un campo ha un nome, la sintassi
    document['nomeformqui']['nomecampoqui']
    è legittima

    Quindi se tu hai un parametro di tipo stringa come nel tuo esempio, una sintassi valida (per restare nello specifico del problema da te segnalato - la soluzione di br1 va benissimo! there is more than one way to do it)

    function MiaFunzione(comboname) {
    document.nomeform[comboname]
    }

    nota che comboname qui NON è fra apici. perchè? perchp come tu hai avuto modo di notare... è già una stringa!

    codice:
    <form name="foo">
    <input type="text" name="foo1" value="ciao!" />
    </form>
    
    <script>
    alert(document['foo']['foo1'].value);
    </script>

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    98
    Grazie ragazzi!

    Va alla grande

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.