Newsgroup: it.comp.lang.javascript
Titolo: Si puo risolvere questo enigma?

Riformulo il mio problema irrisolto:
nel codice html ho una sequenza di 3 tipi di 'select',
per ogni sequenza uso un'array (mi necessita per la successiva
elaborazione in PHP), con lo stesso nome ma con indici
progressivi,
le tre sequenze hanno nomi diversi:
-prima sequenza: 
               <select name="prima[0]">...</select>
               <select name="prima[1]">...</select> 
               ...
               <select name="prima[n]">...</select>;
-seconda sequenza: 
               <select name="seconda[0]">...</select>
               <select name="seconda[1]">...</select> 
               ...
               <select name="seconda[n]">...</select>;
-terza sequenza: 
               <select name="terza[0]">...</select>
               <select name="terza[1]">...</select> 
               ...
               <select name="terza[n]">...</select>.
Ho la necessità di mantenere coordinati fra loro i valori scelti
tramite il select, per cui, se nel 'select' con nome 'prima[0]'
l'utente mi sceglie un valore 'x', nel 'select' con nome 'terzo[0]' il
valore che deve comparire deve essere y=f(x).
Utilizzando l'evento 'onchange' per ogni 'select' dovrei passare
l'indice dell'array, cosicche' posso facilemente referenziare il
'select' che deve coordinarsi, vorrei fare, insomma, una cosa del
genere:
<HTML>...
 <select name="prima[2]" onchange="check(this.value,2)>...
</HTML>
<SCRIPT>...
 function check(valore,indice) {
   if (valore=...) {
   document.nomeform.terza[indice].value=...
}
...
</SCRIPT>
E possibile fare una cosa del genere?
 quando l'interprete incontra
'document.nomeform.terza[indice].value=...',
 dice che terza[indice] non è un oggetto o non è stato definito!
Posso rinunciare a miei 10 mila switch/case (che cmq mi fanno
funzionare bene la gestione dei 'select') e fare un codice piu
pulito?
o devo affidarmi solo al PHP?
...ripeto, la mia conoscenza della sintassi del javascript e del
funzionamento degli oggetti windows è sufficiente!
Fino ad'ora mi sono limitato alla crezazione di pop-up e semplici
roll-over!
Dovrei studiare...ma se mi date qualche dritta...
_doTSim_

 pulito?
Probabilmente sì!

Anzi facciamo una cosa, per far prima posta i tuoi 500 switch, cosě capisco
meglio! Perň solo se č vero che funzionano!

 meglio! Però solo se è vero che funzionano!
Mi hai preso alla lettera :)) Però intendevo in pubblico non in privato....
Ok ho fatto! Ed effetivamente così è allegerita di 20 kb.
Mica male :)
Si può fare di meglio però...
E' inutile fare una select così:
<select name="ord1" onchange='check_gg(this.value,
this.name
)'>
<option value="0" >0</option>
<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
<option value="6" >6</option>
<option value="7" >7</option>
<option value="8" selected="selected">8</option>
</select>
Cioè dove value è uguale a text, si può eliminare value tranquillamente e
cambiare quindi un pò il codice, te lo dico perchè si sta parlando non di
una select ma di 75! A questo proposito vorrei dire che mi sembrano un pò
tantine, non c'era un altro modo?!?
Allora facciamo così, prima dai qualche segno di vita, poi ne riparliamo...

 </select>
Infatti facendo 2 conti veloci si tolgono un'altra decina di k, infatti:
value="0"   => sono 10+1 caratteri (quell'uno potevi evitarlo)
(11*9+11*5+11*9)*25=6325byte
poi selected="selected" è inutile basta: selected e risparmi:
11*3*25=825byte
infine this.value,
this.name
 si può cambiare con this e basta:
16*3*25=1200byte
Per un totale di più di 8Kb, vabbè vanno un pò cambiate le
funzioni, comunque ;-)

thank you!
il codice funziona ed è molto piu leggero!
certo, affinche tutto vada come voglio che debba andare è necessario
che usi degli array come 'name' dei 'select'...ci provo e vedo se le
cose continuano a funzionare...
il codice che ti ho mandato è uno di prova, infatti i 'value' degli
option non ci dovevano essere...li ho messi perchè volevo fare delle
prove con javascript...
per quanto riguarda invece "selected='selected'", è per una questione
di correttezza formale del linguaggio...cerco di adeguargi alle
raccomandazioni del w3c...quindi uso xhtml (che non è altro che un
file xml), che ha regole di sintassi severe e non permette di scrivere
codice sporco come lo permette
l'html!! infatti gli attributi degli elementi vanno scritti cosi:
nome_attributo="valore_attributo"...
il numero delle 'select' non puo essere di meno...anzi
se chi compila il foglio di presenze (che sara collegato ad un
database e quindi permette di effetuare delle selezioni solo per i
giorni non ancora selezionati!!)
lo farà solo a fine mese...i select saranno moltiplicati  per
30!!!!!(o 31)
ti farò sapere se con gli array le cose continuano a funzionare...
un ultima domanda: che funzione svolge eval()?
grazie ancora
_dotTSim_

 _dotTSim_
Ciao Gianni

 
...lo farň, e in settimana ti faccio sapere se mi funzionza!
_dotTSim_
buona lavoro di evangelizzazione del javascript! continua cosě! ;-)

non ho ancora modificato lo script inserendo gli array..
ho voluto prima fare una piccola prova..
...MI SPIEGHI LA DIFFERENZA FRA QUESTI DUE SCRIPT????
SCRIPT FUNZIONANTE:
<html>
<head>
<title>prova</title>
<script language="javascript" type="text/javascript">
function check() {
 document.f.button.value="acceso";
}
 </script>
</head>
<body>
<form name="f">
<select onchange="check()">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<input type="submit" name="button" value="spegni">
</form>
</body>
</hmtl>
SCRIPT NON FUNZIONANTE:
<html>
<head>
<title>prova</title>
<script language="javascript" type="text/javascript">
function check() {
 document.f.button[1].value="acceso";
}
 </script>
</head>
<body>
<form name="f">
<select onchange="check()">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<input type="submit" name="button[1]" value="spegni">
</form>
</body>
</hmtl>
why? come dovrebbe scriversi corretamente il codice affinche gli array
vengano riconosciuti normalmente?
(ho già ordinato un bel libro sul javascript!!!)
_dotTSim_

A questa domanda ti ha già risposto ZER0 nell'altro Thread:
news:MPG.190e7fc89...@powernews.libero.it

 11*3*25=825byte
No, non basta selected. Bastava a l'HTML, non all'XHTML che e' quello a 
cui si dovrebbe puntare d'ora in avanti. Sicuramente, ripetere un 
"selected" e' inutile, basta avere un:
selected="yes" o selected="true"
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"when you eliminate the impossible, whatever remains, however 
improbable, must be the truth" (S.H.)

 Riformulo il mio problema irrisolto:
Mi viene da chiedermi, allora, se hai letto o meno i miei post, e - in 
caso di risposta affermativa - cosa c'e' che non hai compreso. :)


 
news:MPG.190e7fc89...@powernews.libero.it
Come ho detto poc'anzi, si presta poc'attenzione a cio' che scrivo.. 
sniff.. ;(


 una select ma di 75!
Alla faccia.. ma dici 75 per sparare un numero grosso, o perche' sono 
effettivamente 75?
In ogni caso se si vuole "alleggerire la pagina" a livello di peso di kb 
spediti via HTTP, si puo' sempre far si che - dato JS come prerequisito, 
ovviamente - la pagina PHP non generi il codice HTML, ma genera il 
codice JS che a sua volta genera - lato client - le select in questione.


 selected="yes" o selected="true"
Ok, allora facciamo "yes", e viene:
5*3*25=375byte in meno, meglio che un pugno in faccia :)

 codice JS che a sua volta genera - lato client - le select in questione.
Se la cosa dovesse rimanere in un ambito "privato", sarei ASSOLUTAMENTE
d'accordo; ma non essendo cosě ed essendoci una possibilita' su un milione
che non funzioni io preferirei non farlo...

, gianni20000
@
katamail.com
 says...



Dipende dai prerequisiti. Se dai JS come pre-requisito del sito (e mi 
pare che lo sia), il problema non si pone. Senza andare alla ricerca di 
creazione dinamica degli oggetti col DOM, ti basta un document.write, 
gestito sufficientemente bene anche dai browser piu' vecchi.
