Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    richiamare array da variabile

    ho una serie di array. con una funzione ne vado a leggere uno e ne stampo i risultati. quando richiamo la funzione con un evento le passo il valore del nome dell'array che deve leggere. come faccio a dirle di andare a leggere proprio l'array che si chiama così?

    [code]
    arr1=new Array()
    arr2=new Array()
    arr3=new Array()
    arr4=new Array()

    function scrivi(nomearray) {
    document.write( ??? )
    }

    onload="scrivi('arr2')"

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Fosse stato un paio di anni fa, ti avrei risposto:

    function scrivi(nomearray) {
    var ss = eval(nomearray+'[2]');
    document.write(ss)
    }

    Ora che la funzione eval() e` deprecata non saprei cosa rispondere.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    questo esempio funziona:

    <script>
    arr1=new Array('1','2','3')
    arr2=new Array('4','5','6')
    arr3=new Array('7','8')
    arr4=new Array('9','0')

    function scrivi(nomearray) {
    for (i=0;i<nomearray.length;i++) {
    document.write(nomearray[i]+"
    " )
    }
    }

    scrivi(arr2)
    </script>

    Ricorda che non puoi richiamare una funzione con all'interno delle istruzioni document.write() all'onload della pagina: sovrascriverebbero l'intero contenuto.

    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

  4. #4
    mhm, credo (e sottolineo CREDO), di non aver spiegato bene il mio problema. il fatto è che (a prescindere da document.write) io ricevo il nome dell'array da stampare da una select con l'evento onchange:
    onchange="scrivi(this.value)"

    quindi, se sostituiamo il document.write con un document.all.nomediv.innerHTML, a me interesserebbe passare alla funzione il valore dell'opzione selezionata dal menu a discesa che corrisponde al nome dell'array

    codice:
    <select onchange="esegui(this.value)">
    <option> </option>
    <option value="arr1">visualizza primo array</option>
    <option value="arr2">visualizza primo array</option></select>
    <script>
    function esegui(nomearray) {
    // qua devo mandare il contenuto del primo elemento dell'array selezionato ad un tag div con document.all.nomediv.innerHTML...
    }
    </script>
    se non sbaglio (altrimenti potete scagliarmi contro ogni oggetto contundente che avete per le mani), nonostante forse non sia stato molto chiaro con il primo post, i codici postati non risolvono il problema...
    giuro cmq che, prima di postare il mio problema, ci ho riflettuto parecchio...

  5. #5
    Originariamente inviato da Mich_
    Fosse stato un paio di anni fa, ti avrei risposto:

    function scrivi(nomearray) {
    var ss = eval(nomearray+'[2]');
    document.write(ss)
    }

    Ora che la funzione eval() e` deprecata non saprei cosa rispondere.

    Ciao
    Michele
    e al posto di eval() cosa si usa, number() o parseFloat() ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da marcocavicchioli
    e al posto di eval() cosa si usa, number() o parseFloat() ?
    Nessuno dei due, ma non saprei dirti.
    Eval() trasforma una stringa in oggetto, o valuta l'espressione stringa come fosse un comando.

    Quello sopra e` uno di quei casi in cui io non conosco la sostituzione di eval() - per molti altri casi si puo` usare (a seconda delle circostanze):

    document.forms['NOMEFORM']

    document.NOMEFORM.elements['NOMECAMPO']

    document.getElementById('ID_DELL_OGGETTO')

    ...

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da marcocavicchioli
    mhm, credo (e sottolineo CREDO), di non aver spiegato bene il mio problema. il fatto è che (a prescindere da document.write) io ricevo il nome dell'array da stampare da una select con l'evento onchange:
    onchange="scrivi(this.value)"

    quindi, se sostituiamo il document.write con un document.all.nomediv.innerHTML, a me interesserebbe passare alla funzione il valore dell'opzione selezionata dal menu a discesa che corrisponde al nome dell'array

    codice:
    <select onchange="esegui(this.value)">
    <option> </option>
    <option value="arr1">visualizza primo array</option>
    <option value="arr2">visualizza primo array</option></select>
    <script>
    function esegui(nomearray) {
    // qua devo mandare il contenuto del primo elemento dell'array selezionato ad un tag div con document.all.nomediv.innerHTML...
    }
    </script>
    se non sbaglio (altrimenti potete scagliarmi contro ogni oggetto contundente che avete per le mani), nonostante forse non sia stato molto chiaro con il primo post, i codici postati non risolvono il problema...
    giuro cmq che, prima di postare il mio problema, ci ho riflettuto parecchio...
    Per come la vedo io il problema e` chiaro, la soluzione un po' meno.

    Ma se il tuo problema e` solo per il browser IE (come sembra da come usi una serie di funzioni proprietarie), puoi tranquillamente usare eval() . Alla prossima release potrebbe non funzionare piu` nulla, ma a questo ci penserai a suo tempo.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8

    ok

    sì, eval() funge. ed io sto usando proprio solamente explorer (sto facendo degli script dimostrativi).

    visto però che il metodo eval() è deprecato e presto verrà eliminato come fare a sapere se verrà sostituito e con cosa verrà sostituito? si trova qualcosa a riguardo nella documentazione ufficiale di javascript (chennesò su devedge.netscape.com)?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Puoi provare a cercare in Netscape, dove proponevi tu; io non ho mai approfondito la cosa.

    Comunque la mia impressione e` che eval() continuera` a funzionare in IE anche nella prossima release (non ci sono impedimenti per farlo, a parte l'uso intenso di risorse hardware).
    Sono altre le funzionalita` che non potranno essere implementate (pena la non compatibilita` con il W3C), tipo il document.all o l'uso di oggetti senza il window o document davanti o ancora il case-insensitivity.

    Per il tuo caso specifico, si potrebbe pensare di aggirare il problema con una matrice a due dimensioni (passi i due indici).

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Originariamente inviato da Mich_
    Puoi provare a cercare in Netscape, dove proponevi tu; io non ho mai approfondito la cosa.

    Comunque la mia impressione e` che eval() continuera` a funzionare in IE anche nella prossima release (non ci sono impedimenti per farlo, a parte l'uso intenso di risorse hardware).
    Sono altre le funzionalita` che non potranno essere implementate (pena la non compatibilita` con il W3C), tipo il document.all o l'uso di oggetti senza il window o document davanti o ancora il case-insensitivity.

    Per il tuo caso specifico, si potrebbe pensare di aggirare il problema con una matrice a due dimensioni (passi i due indici).

    Ciao
    Michele
    in effetti non avevo pensato ad una matrice a due dimensioni (cosa che risolverebbe definitivamente il problema). ma se volessi (così per pigrizia) dare agli array dei nomi non numerati e diversi tra loro potrei lo stesso avere dei problemi (con arr1, arr2, arr3, ecc. ovviamente la questione non si pone).

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.