Newsgroup: it.comp.lang.javascript
Titolo: Scorporare javascript dall'HTML

Un saluto a tutti,
sto eliminando tutto (o quasi) il codice javascript dalla pagina HTML 
"Case.html" che vi ho sottoposto a giudizio, esportandolo in un file 
esterno chiamato "e-comm_1.js".
Copiando integralmente tutto il codice contenuto nei tag <SCRIPT> 
all'interno del file .js come "function Tabella ()" funziona tutto a 
meraviglia.
Se poi provo a migliorare la leggibilità di quest'ultimo scorporando il 
"pizzone" di istruzioni contenuto nell'evento "onchange" del SELECT qta, 
ed inglobandolo in un'ulteriore "function Calcola()" mi si pianta tutto.
Ho messo on-line il tutto su:
http://digilander.libero.it/wolfenstein1/Offerte/Case.html
Sapete dirmi dove sto sbagliando?
Grazie.
	wolfenstein

 ed inglobandolo in un'ulteriore "function Calcola()" mi si pianta tutto.
Alla faccia della leggibilità! Hai una riga di qualche migliaio di
caratteri!
Comunque sia leggo nella prima riga:
if (document.Modulo.qta'+[i]+'.
C'è qualcosa che non va, apri le virgolette dopo qta e le chiudi dopo il
+....
Se intendi avere degli input con name variabile devi usare la sintassi
estesa:
if(document.Modulo.elements['qta'+i].options............
Quanto sopra resupponendo che i sia una variabile (non conosco la sintassi
sopra usata [i], non so cosa possa generare, immagino un errore. Se invece
il campo si chiama proprio, per esempio, qta[3], allora metti anche le
quadre tra le virgolette): elements['qta['+i+']'].options....
Devi correggere la sintassi (ho visto che è usata un po' dappertutto), lo
script sembra totalmente errato così ad occhio.
Forse prima lo usavi con document.write e quindi era tutto tra virgolette?
La logica è completamente diversa: nel primo caso scrivi la function, in
questo caso la hai già...
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.
--

 questo caso la hai già...
Per cui, se ho ben capito, la sintassi da usare è:
document.Modulo.elements['qta'+i].options............
e non:
document.Modulo.elements.qta'+[i]+'.options............
Ciao.
	wolfenstein

 document.Modulo.elements.qta'+[i]+'.options............
esatto, converti il tutto e riprova
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.
--

 esatto, converti il tutto e riprova
Ho fatto un po' di tentativi senza risultato e comincio ad avere un 
brutto presentimento: forse mi sto impelagando in una situazione che non 
riesco a risolvere.
Ho messo on-line una pagina identica, con la sola differenza che la 
funzione "Calcola" non è scorporata da "Tabella". Dunque tutto il 
relativo codice è nell'interno dell'"onchange" del SELECT "qta".
Il file che contiene il codice è: "e-comm_2.js".
In questa condizione funziona tutto e questo è il link:
http://digilander.libero.it/wolfenstein1/Offerte/Case1.html
Ora, se pensi che sia risolvibile in maniera tutto sommato semplice, 
dagli pure un'occhiata, altrimenti lascia perdere.
Mi sei stato già di grande aiuto e non voglio diventare petulante.
Tanti saluti.
	wolfenstein

 riesco a risolvere.
Non è che non sei in grado, è che quando ti incastri con tutte queste
virgolette la cosa migliore è riscriverla da capo; non ci vuole molto (se
riesci a disricarti nella megastringa contenuta nell'onchange della
select!)
Ti ho fatto l'inizio, vedi un po' se riesci ad andare avanti.
http://www.criosoftware.it/wolfenstein/case1.html
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.
--

Cristiano Larghi ha scritto:

Ormai il ringraziarti è fino ridicolo.
Hai anche ottimizzato il codice !
Adesso mi metto sotto e vedo di riscrivere il tutto.
Non so che programmi hai per le ferie, ma se passi dall'Abruzzo 
comunicamelo sulla mia e-mail (la leggi in chiaro nell'header)
Ti garantisco una mangiata di pesce che non ti scorderai per un pezzo.
Tanti saluti.
	wolfenstein

 Ti garantisco una mangiata di pesce che non ti scorderai per un pezzo.
Porc...qua mi prendi per la gola!
Non ho in programma di passare di lì, ma nel caso terrò sicuramente in
mente.
Grazie per l'invito


 Grazie per l'invito
Di niente. E' il minimo che io possa fare.
Tanti saluti.
	wolfenstein

 disabilitati e deselezionati.
Questo è causato perché alla riga 29 dello script c'è un return false
(tutta la parte dopo non viene eseguita!)
Inoltre non devi usare onchange sul radio perché si scatena solo quando
togli il focus, osa onclick.
Se ti riferisci all'oggetto stesso puoi usare this, es. if(this.checked)
che risulta molto più leggibile.
Vedi 
http://www.criosoftware.it/wolfenstein/case.html
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.
--

 Vedi 
http://www.criosoftware.it/wolfenstein/case.html
Infatti, adesso va bene. :-)
Grazie e buone ferie.
	wolfenstein
P.S.: L'invito è sempre valido ...

 P.S.: L'invito è sempre valido ...
Non dubitare, queste cose non le dimentico :-)


 Non dubitare, queste cose non le dimentico :-)
Ci conto.
Mi sono comportato bene invece nel lasciare inalterata la chiamata a 
TotCase ? (Modulo.TotCase.value)
Ciao.
	wolfenstein

 TotCase ? (Modulo.TotCase.value)
Beh, la chiamata è corretta; poi decidi te in che modo implementarlo. Io
uso quasi sempre il with per riferirmi al modulo una volta sola, ma va a
gusti
