Newsgroup: it.comp.lang.javascript
Titolo: Dove sbaglio ?

Un saluto a tutti,
sto diventando matto per capire dove sbaglio in questo codice, 
limitatamente alla parte che apre una PopUp (evidenziata):
<SCRIPT type="text/javascript">
for (i=0;i<articoli.length;i++)
{
document.write("<tr>
<td>",articoli[i].cod,"</td>
========> QUI DOVREBBE APRIRSI LA POPUP
<td align=left><a href=onclick=\"open(","Dettagli/pippo.html", "", 
"width="+600+", height="+450+", left="+((screen.width - 600)/2)+", 
top="+((screen.height - 450)/2)+", resizable, 
scrollbars",")\">",articoli[i].descr,"</a></td>
========> FINE ISTRUZIONE APERTURA POPUP
<td align=right>",articoli[i].prz,"</td>
<td><SELECT><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></SELECT></td>
<td></td>
<td><input type=button value=\"Test\" 
onclick=\"accetto(articoli[",i,"].nome,articoli[",i,"].prezzo)\"></td>
</tr>")
</SCRIPT>
In breve, creo dimanicamente una tabella che legge i dati da un file .js 
e attivo un link ad una PopUp di informazioni per ciascuna voce.
Funziona tutto ad eccezione dell'apertura della PopUp secondo le 
specifiche passate sopra e che per comodità riporto anche qui di seguito:
open("Dettagli/pippo.html", "", "width="+600+", height="+450+", 
left="+((screen.width - 600)/2)+", top="+((screen.height - 450)/2)+", 
resizable, scrollbars")
Qualcuno sa dirmi dove sbaglio ?
	wolfenstein

 Qualcuno sa dirmi dove sbaglio ?
scelta pessima, il codice e' illeggibile e impossibile da manutenere.
ci sono errori nell'html e nel javascript dovuti al follón di apici e doppi
apici.
non ti sembra piu' leggibile cosi'?
document.write('<a href="#" onclick="open(',
               '\'Dettagli/pippo.html\',',
               '\'\',',
               '\'width=',
	       600,
	       ',height=',
               450,
               ',left=',
               ((screen.width - 600) / 2),
               ',top=',
               ((screen.height - 450) / 2),
               ',resizable,scrollbars\'',
               ');">',
               articoli[i].descr,
               '</a>');
-- 
<artemis:alpeia xmlns:artemis="
http://utenti.lycos.it/artemis
" />

 [cut]

E' indubbiamente più leggibile ma non funziona ugualmente.
Se mi limito ad aprire una finestra a schermo pieno senza usare il 
comando "open" che mi crea la PopUp funziona tutto perfettamente, ma se 
provo a far aprire la PopUp con le specifiche che ho riportato non 
funziona più niente.
Ed il codice che apre la PopUp è funzionante.
Se sai aiutarmi sei il benvenuto.
Grazie mille comunque per l'aiuto che mi hai dato.
	wolfenstein

Ciao, wolfenstein!
Il giorno 05/07/2004 alle ore 17:43 hai scritto:
 w> E' indubbiamente piů leggibile ma non funziona ugualmente.
Leggibile un par di zebedei mi si sono incrociati gli occhi... cosi' a prima
vista sembrerebbe mancare un return false dopo la open. Non so se mancava
anche nel guazzabuglio originale.
Bye
-- 
Fear leads to anger, anger leads to hate, hate leads to suffering.
http://www.maccasoft.com

 ========> FINE ISTRUZIONE APERTURA POPUP
Non e' che sia molto ortodosso fare "href=onclick= ..." :-)
Basta un semplice: a href=javascript:open() e lascia perdere l'onclick
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
  ---- Bring Your Site To Life!!!!
http://www.wmtools.it
 ---- WebMasterTools - Servizi per il tuo sito
http://www.dev2dev.it
 ---- La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO .

 anche nel guazzabuglio originale.
Grazie per il guazzabuglio. :-)))
A scanso di equivoci riposto il codice ripulito il più possibile ed 
aggiornato.
<TABLE class="Standard" border="1">
   <TR>
     <TD Class="Centrata">Voce1</TD>
     <TD Class="Centrata">Voce2</TD>
     <TD Class="Centrata">Voce3</TD>
     <TD Class="Centrata">Voce3</TD>
     <TD Class="Centrata">Voce5</TD>
     <TD Class="Centrata">Voce6</TD>
   </TR>
<SCRIPT type="text/javascript">
for (i=0;i<articoli.length;i++)
{
document.write("<tr><td>",articoli[i].cod,"</td>
<td align=left><A href=\"javascript:;\" 
onclick=\"open(articoli[",i,"].pag, \"\", \"width=\"+600+\", 
height=\"+450+\", left=\"+((screen.width - 600)/2)+\", 
top=\"+((screen.height - 450)/2)+\", resizable, 
scrollbars\")\">",articoli[i].descr,"</A></td>
<td align=right>",articoli[i].prz,"</td>
<td></td>
<td></td>
<td><input type=button value=\"Accetta\" onclick=\"spedisci"></td></tr>");
}
</SCRIPT>
</TABLE>
Tanti saluti.
	wolfenstein

 E' indubbiamente piů leggibile ma non funziona ugualmente.
[cut]
Ehm, funziona. :-o
C'era un errore mio di sintassi.
La PopUp si apre correttamente come desiderato.
GRAZIE !!  :-)
Abbi pazienza, ti chiedo un'ultima cosa.
C'č una cosa che non riesco proprio a fargli fare:
Se al posto di un link esplicito cerco di passargli un link inserito nel 
solito array "articolo[i]" mi restituisce un errore e la PopUp si apre 
vuota.
Eccoti il codice:
<SCRIPT type="text/javascript">
for (i=0;i<articolo.length;i++)
{
	document.write('<tr><td>',
	articoli[i].cod,
	'</td><td align=left><a href="#" onclick="open(',
	'\'articoli[',i,'].pag\',',   <=== QUI PUNTO ALL'ARRAY
	'\'\',',                           INVECE CHE ALLA PAGINA
	'\'width=',
	600,
	',height=',
	450,
         ',left=',
         ((screen.width - 600) / 2),
         ',top=',
         ((screen.height - 450) / 2),
         ',resizable,scrollbars\'',
         ');">',
         articoli[i].descr,
         '</a></td><td align=right>',
         articoli[i].prz,
         '</td><td><SELECT><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></SELECT></td><td></td><td>
	<input type=\"button\" value=\"Acquista\"
	Onclick=\"aggiungiCarrello(articoli[',i,'].nome,
	articoli[',i,'].prezzo)\"></td></tr>');
}
</SCRIPT>
Di nuovo grazie.
	wolfenstein

 	'\'\',',                           INVECE CHE ALLA PAGINA
gli apici! gli apici! :)
articoli[i].pag lo devi passare a open() senza quotarlo: se lo quoti open()
lo interpreta come una stringa
'</td><td align=left><a href="#" onclick="open(',
'articoli[',i,'].pag,',
// eccetera
-- 
artemis.alpeia

 // eccetera
Funziona perfettamente !!! GRANDE !
Se ti confesso che ieri pomeriggio ho perso 4 (quattro) ore e questa 
mattina altre 2 (due) ore solo per questi apici penso che a dir poco 
rischi di collassare dalle risate. (Perchè ovviamente ho provato qualche 
centinaio di combinazioni, ovviamente tutte sbagliate) :-(
Un più che mai sincero grazie.
	wolfenstein

 centinaio di combinazioni, ovviamente tutte sbagliate) :-(
a volte c'e' un sottile piacere nel farsi del male :)
comunque se alla fine impari qualcosa dagli errori non e' del tutto tempo
perso
-- 
artemis::alpeia

 perso
Infatti.
Pian piano sto andando avanti, e ad ogni ostacolo (seppur banale) che 
supero provo un'indiscutibile senso di soddisfazione.
Adesso però sto "incocciando" sui CheckBox e sull'arrotondamento alle 2 
cifre decimali.
In sostanza, la mia idea è la seguente:
quando clicco su un CheckBox, usando l'evento "onClick" faccio 
controllare lo stato del CheckBox; se è settato su "false" lo setto su 
"true" e faccio addizionare il valore del campo "totale[i]" che 
appartiene al CheckBox al "TotCase", mentre se è settato su "true" lo 
setto su "false" e faccio sottrarre dal "TotCase" il valore del campo 
"totale[i]" che appartiene al CheckBox.
Questo in teoria.
Nella pratica cliccando sul CheckBox mi esegue sempre e solo l'addizione 
e non cambia lo stato del CheckBox stesso.
Per quanto riguarda i decimali invece ho usato il seguente metodo:
math.round((numero * 100) / 100)
suggerito in un post precedente ad uno che aveva la stessa necessità.
In realtà succede che 123.30 diventa 123.3 e 100.00 diventa 100.
Te la senti di dare un'occhiata al codice qui sotto ?
Ometto la parte iniziale che è quella già postata in precedenza e parto 
dal comando <SELECT>
Tanti saluti.
	wolfenstein
... omissis ...
'</TD><TD><SELECT name=\"qta'+[i]+'\" 
onchange=\"Modulo.totale'+[i]+'.value=Modulo.qta'+[i]+'.options[Modulo.qta'+[i]+'.options.selectedIndex].value 
* parseFloat(',articoli[i].prz,');\"><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></SELECT></TD><TD><INPUT 
name=\"totale'+[i]+'\" type=\"text\" value=\"0.00\" align=\"right\" 
readonly></TD><TD><INPUT name=\"aggiungi'+[i]+'\" type=\"checkbox\" 
onclick=\"javascript:if (Modulo.aggiungi'+[i]+'.checked = false) 
{(Modulo.aggiungi'+[i]+'.checked = true);} Modulo.TotCase.value = 
parseFloat(Modulo.TotCase.value) + 
parseFloat(Modulo.totale'+[i]+'.value); elseif 
(Modulo.aggiungi'+[i]+'.checked = false); 
{(Modulo.aggiungi'+[i]+'.checked = true);} Modulo.TotCase.value = 
parseFloat(Modulo.TotCase.value) - 
parseFloat(Modulo.totale'+[i]+'.value);\"></TD></TR>');
}