Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: select da array

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    91

    select da array

    scusate, nel caso io voglia creare degli option dinamici da un array con js come posso fare??? cioè:
    ho un array bidimensionale con articoli(primo campo) e dimensione(secondo campo)
    quando mi viene selezionata la prima select la seconda si deve aggiornare in base al valore del priomo campo. questo sono riuscito a farlo, infatti se faccio una semplice document.write mi stampa esattamente quello che voglio, il problema è che dall'array non riesco a creare la select, mi da undefined nella seconda, riporto il codice

    document.getElementById('select_dove_vado_ad_inser ire').options[num_option_select_in cui_inserisco] = new Option('',escape(valore_che_ins_nella_select),fals e,false);

    document.getElementById('select_dove_vado_ad_inser ire').options[num_option_select_in cui_inserisco].innerHTML = xxx;


    allora: "valore che inserisco nella select" non è altro che array(i), ma in xxx che dovrei inserire??? ho provato in diversi modi ma mi da sempre undefined

    grazie mille in anticipo

  2. #2
    scusa, com'è strutturato l'array? (un esempio)
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    91
    ciao artorius, grazie per la risposta innanzitutto
    l'array è un array bidimensionale, ad esempio:

    nell'array sono presenti degli articoli, con dimensione e peso:

    articolo = new array();
    for(...) { articolo[i] = new array(dimensione, peso); }

    e io vorrei creare una prima select in cui si seleziona l'articolo, senza duplicati, che in qualche modo ho fatto, magari non proprio con un codice eccezionale, però va bene.
    La seconda select si dovrebbe aggiornare con la dimensione relativa all'articolo scelto.
    e qui credo che stia trattando male con innerHTML perchè non carica nulla al momento della scelta....

  4. #4
    spetta, ma l'array può avere dei duplicati nelle dimensioni ma pesi diversi? non si capisce come può essere l'array, fammi un esempio di come l'array È, non come viene creato, che ne so io che valori dimensione e peso possono avere.
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    91
    ok si infatti non è tanto chiaro, ad es:

    articolo dimensione peso

    sedia - x - 10
    sedia - y - 12
    sedia - z - 14
    sedia - w - 10
    tavolo - a - 25
    tavolo - a - 30
    vaso - b - 11


    quindi l'articolo può contenere duplicati, anche se non si devono vedere nella prima select, ad es:
    prima select: sedia-tavolo-vaso.

    la seconda select può anche avere duplicati e deve essere gestita come la prima

    ad es:

    I select: sedia-tavolo-vaso
    I scelta: sedia

    II select: x-y-z
    II scelta: y

    risultato: e stata scelta la sedia con dimensione y e avente peso 12


    nell'array quindi c'è articolo e in ogni articolo c'è un array con dimensione e peso

  6. #6
    ma perché non usi un oggetto?

    codice:
    var articoli = {}; //Definizione di oggetto
    
    articoli.sedia = {}; //Definizione di oggetto
    articoli.sedia.x = 10;
    articoli.sedia.y = 12;
    articoli.sedia.z = 14;
    
    articoli.tavolo = {};
    articoli.tavolo.a = 25;
    articoli.tavolo.b = 30;
    
    articoli.vaso = {};
    articoli.vaso.c = 11;
    
    //Per accedere ad un valore puoi fare 
    alert(articoli.sedia.z);
    //Ottieni l'alert di 14
    
    //Oppure puoi usare la sintassi degli array
    var sedie = articoli["sedia"];
    alert(sedie["x"]);
    //Ottieni l'alert di 10
    In questo modo ti è un pelo più gestibile la cosa.

    Puoi usare anche una sintassi più compatta per definire l'oggetto:
    codice:
    var articoli  = {
       sedia : {
          x : 10,
          y : 12,
          z : 14
       },
       tavolo : {
          a : 25,
          b : 30
       },
       vaso : {
          c : 11
       }
    };
    È identico alla definizione sopra ma è più compatta (e forse più complessa).

    Prova a modificare l'array in un oggetto tipo questo, dovresti trovare più semplice la gestione.
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    91
    ok artorius, grazie mille, ora ci provo e ti faccio sapere

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    91
    scusami ancora artorius, ma poi una volta creato l'array come oggetto in questa maniera le select option come le potre sistemare???

    i dati che inserisco, sedia-tavolo e le dimensioni e i pesi li prendo da una scansione php fattA in questo modo:

    <script>
    id = null; volantinaggio = null; citta = null; zona = null; tipo = null;
    dimensione = null; carta = null; quantita = null; prezzo = null;
    required_element = new Array();
    num = 0;
    </script>

    <?php
    if(count($this->rows) == 0) {
    echo JText::_('Nessun Nome');
    } else {
    foreach($this->rows as $r) {
    ?>

    <script>
    id = "<?php echo $r->id; ?>"; volantinaggio = "<?php echo $r->volantinaggio; ?>"; citta = "<?php echo $r->citta; ?>";
    zona = "<?php echo $r->zona; ?>"; tipo = "<?php echo $r->tipo; ?>"; dimensione = "<?php echo $r->dimensione; ?>";
    carta = "<?php echo $r->carta; ?>"; quantita = "<?php echo $r->quantita; ?>"; prezzo = "<?php echo $r->prezzo; ?>";
    required_element[num] = new Array(id, volantinaggio, citta, zona, tipo, dimensione, carta, quantita, prezzo);
    num = num+1;
    </script>

    <?php
    }
    }
    ?>

  9. #9
    Ma è un modulo per Joomla?

    Comunque, mi interessa sapere cosa questo script PHP genera non il codice in se, postami un paio dei tag <script> generati da quel codice.
    I DON'T Double Click!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    91
    si è per un componente joomla...

    il php fa una scansione dei dati del model e quindi dal database, e con questa scansione del php carico tutto in array js per poter poi creare le select option

    ecco tutto il codice:



    <?php

    // Impedisce l'accesso diretto al file
    defined('_JEXEC') or die('Restricted access');
    ?>



    <script>
    id = null; volantinaggio = null; citta = null; zona = null; tipo = null;
    dimensione = null; carta = null; quantita = null; prezzo = null;
    required_element = new Array();
    num = 0;
    </script>

    <?php
    if(count($this->rows) == 0) {
    echo JText::_('Nessun Nome');
    } else {
    foreach($this->rows as $r) {
    ?>

    <script>
    id = "<?php echo $r->id; ?>"; volantinaggio = "<?php echo $r->volantinaggio; ?>"; citta = "<?php echo $r->citta; ?>";
    zona = "<?php echo $r->zona; ?>"; tipo = "<?php echo $r->tipo; ?>"; dimensione = "<?php echo $r->dimensione; ?>";
    carta = "<?php echo $r->carta; ?>"; quantita = "<?php echo $r->quantita; ?>"; prezzo = "<?php echo $r->prezzo; ?>";
    required_element[num] = new Array(id, volantinaggio, citta, zona, tipo, dimensione, carta, quantita, prezzo);
    num = num+1;
    </script>

    <?php
    }
    }
    ?>





    <script>

    function inserisci(elemento_confronto, elemento_inserimento, array) {
    var conta = 0;
    while(array[conta]!=null) {
    if(array[conta]==elemento_confronto) {
    return;
    } conta++;
    } var res = array.push(elemento_inserimento);
    }

    function prova() {
    num_option = document.getElementById('citta').options.length;
    var array = new Array();
    var indice_selezione = document.getElementById('volantinaggio').selectedI ndex;
    var value_selezione = document.getElementById('volantinaggio').options[indice_selezione].value;
    var testo_selezione = document.getElementById('volantinaggio').options[indice_selezione].innerHTML;
    for(var i=0; i<required_element.length; i++) {
    if(required_element[i][1] == value_selezione) {
    var confronto = required_element[i][2];
    inserisci(confronto, confronto, array);
    }
    } for(var j=0; j<array.length; j++) {
    for(a=0; a<num_option; a++) {
    document.getElementById('citta').options[a] = new Option('',escape(array[j]),false,false);
    document.getElementById('citta').options[a].innerHTML = array[j].innerHTML;

    }
    }

    }

    </script>











    <div class="id_1" id="id_1">

    <select name="volantinaggio" id="volantinaggio" onChange="prova()" style="width:100px; text-align:center">
    <option value=""></option>
    <script>
    var ins = new Array();
    for(var i=0; i<required_element.length; i++) {
    var elemento = required_element[i][1];
    inserisci(elemento, elemento, ins);
    } for(var i=0; i<ins.length; i++) {
    document.write("<option value='"+ins[i] + "'>" + ins[i]+ "</option>");
    }

    </script>
    </select>






    <select name="citta" id="citta" style="width:100px; text-align:center">
    </select>





    </div>





    è un componente per l'utente per fare preventivi online

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.