Aggiornare tutti

  • Creatore Discussione Creatore Discussione djjunior
  • Data di inizio Data di inizio

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Carissimi ho un problema con uno script.
A questo indirizzo è visibile la funzionalità completa di tutti gli script.
LINK
Come si può notare selezionando dal menù SUPPORTO, l'opzione METAL tramite una div cambia la select del FORMATO (prima opzione15x20) ora selezionando quindi METAL e cliccando su IMPOSTAXTUTTI aggiorna correttamente la select del supporto a tutti ma non quella del formato, anzi lo fa solo all'ultimo risultato, Dove sbaglio? Grazie
G.
 
Capisco la difficoltà visionando la pagina online, comunque in pratica ho fatto questo script:
Codice:
<script language="javascript" type="text/javascript">
function metal<%=iContatore%>() 
{
var opz = document.getElementById("supporto<%=iContatore%>");
          if (opz == "metal") {
          
document.getElementById('box<%=iContatore%>').style.display = "block";
document.getElementById('boxa<%=iContatore%>').style.display = "none";
}
}
</script>
Premetto che lo script e inserito in un ciclo dove ricevo risultati variabili da db
Questo script lo richiamo da un'altra select tramite: onchange="metal<%=iContatore%>()"
In pratica dovrebbe fare , ma non funziona, che selezionando dalla select SUPPORTO l'opzione METAL, dovrebbe visualizzare il div BOX e nascondere il div BOXA, è dovrebbe farlo a tutti i risultati, ecco spiegato nel codice il iContatore.
Dove sbaglio?
Grazie per l'eventuale aiuto.
G.
 
Ciao, è un po contorto il ragionamento
in pratica crei tot function (metal1, metal2 etc) per ogni tr che mostri?
e quando le richiami le funzioni ?
 
Diciamo che più che contorto è difficile da spiegare...
Ho creato questa function metal numerata, naturalmente non so se sto facendo un azione corretta, ma in pratica se ti colleghi al link che è pubblicato come primo post, forse è + chiaro.
Come si può notare selezionando dal menù SUPPORTO, l'opzione METAL tramite una div cambia la select del FORMATO (prima opzione15x20) ora selezionando quindi METAL e cliccando su IMPOSTAXTUTTI aggiorna correttamente la select del supporto a tutti ma non quella del formato.
Dove sbaglio? Grazie
 
E' difficile anche da capire
Ho visto che hai creato le funzioni
Codice:
 function metal0() 
                        {
                            var bnd = document.getElementById("supporto0");
                            if (bnd == "metal") {
          
                                document.getElementById('box0').style.display = "block";
                                document.getElementById('boxa0').style.display = "none";
                            }
                        }
ma dovrebbe esserci u richiamo sull'onchange per farla funzionare
Codice:
metal0();
Io cmq credo ci sia una strada più semplice, con un ciclo for per esempio
 
Grazie per la risposta, ma anche mettendo all'onchange la funzione metal0() non funziona, puoi indicarmi come implementare il ciclo for alla funzione?
Grazie
 
Ancora non mi è chiaro il fine
al cambio di una della select nella colonna supporto, se selezionato metal, devi aggiornare le option di tutte le select della colonna formato e selezionare metal in tutte le select della colonna supporto ?
 
Si proprio così, anche se metal (premendo imposta x tutti) nella colonna supporto già lo fa, vedi dal link
Grazie
 
Ancora qualche informazione
se io seleziono metal nella select della prima riga tutte le select delle altre righe devono cambiare
ma se poi seleziono lucida nella select della terza riga per esempio, tutte le select devono tornare come prima ?
che ne dici di usare jquery per semplificare il codice?
ps:
molto interessante la foto nella terza <tr> :)
 
No allora come vedi ci sono i tasti IMPOSTAXTUTTI su ogni select.
Se io seleziono alla prima (o altre righe) METAL come vedi nel campo FORMATO della riga di riferimento cambia.
Ora se voglio dare le impostazioni a tutte le righe che siano METAL basta che clicco su IMPOSTAXTUTTI e il sistema aggiorna tutte le righe a METAL ma proprio in questo caso vorrei che cambi (il div box)anche le select FORMATO, come da funzione onchange="hideshow()" della select supporto (vedi codice).
E' un po complicato lo ammetto, ma utilizzando la pagina lo capisci meglio.
Seleziona METAL alla prima riga e vedi che il formato di riferimento cambia, ora premi IMPOSTAXTUTTI da campo SUPPORTO, vedi che cambiano tutte le righe a METAL? Però le select FORMATO restano a 10X15 mentre dovrebbero essere 15X20 come la prima riga.
Grazie 1000 per l'aiuto.
G.
 
Comincia ad essere leggermente più chiaro
mettiamo che le righe della tua tabella siano sempre 6 come nell'esempio che hai postato
potresti modificare la funzione assegnaFormatoATutti() cosi
Codice:
function assegnaFormatoATutti(indice) {
                var selFormato = document.forms['info'].formato;
                var indiceSelezionato = selFormato[indice].selectedIndex;
                for (var i=0; i<selFormato.length; i++) {
                    selFormato[i].selectedIndex=indiceSelezionato;

                }
                if(indiceSelezionato == "metal") {
                    for(var z = 0; z<6; z++) {                        
                        document.getElementById('box' + z).style.display = "block";
                        document.getElementById('boxa' + z).style.display = "none";
                    }
                }               
                    
            }
 
Forse volevi metterlo alla funzione assegnaSupportoatutti così:
Codice:
function assegnaSupportoATutti(indice) {
	var selSupporto = document.forms['info'].supporto;
	var indiceSelezionato = selSupporto[indice].selectedIndex;
	for (var i=0; i<selSupporto.length; i++) {
		selSupporto[i].selectedIndex=indiceSelezionato;
		}

		 if(indiceSelezionato == "metal") {
         for(var z = 0; z<6; z++) {                        
         document.getElementById('box' + z).style.display = "block";
         document.getElementById('boxa' + z).style.display = "none";
                    }
		}
}
Ho provato ma non cambia il formato dopo avere selezionato metal e premuto impostaxtutti.
Le righe possono variare come devo eventualmente modificarlo?
Grazie
G.
 
Si la funzione è quella che dici tu
cambia invece la condizione
Codice:
if(indiceSelezionato == "metal") {
cosi
Codice:
if(selSupporto[indice].value == "metal") {
 
prego, per contare le righe della tabella in automatico potresti provare cosi
considerando che la tua tabella abbia sempre id "table1"
Codice:
if (selSupporto[indice].value == "metal") {
            tr = document.getElementById("table1").getElementsByTagName("tr");
            for (var z = 0; z < tr.length; z++) {
                document.getElementById('box' + z).style.display = "block";
                document.getElementById('boxa' + z).style.display = "none";
            }
        }
 

Discussioni simili