Newsgroup: it.comp.lang.javascript
Titolo: Moltiplicazione

Ciao a tutti, il problema è il seguente:
il codice sotto riportato funziona solo con Ie ma non con
Netscape. Penso che il "Menu a Tendina" non riesca a passare
il suo valore numerico... Qualcuno può dirmi gentimente come
fare a renderlo funzionale anche con Netscape... Grazie Max
<html><HEAD>
<SCRIPT LANGUAGE="JavaScript">
function prezzo_totale(form) {
prezzo=eval(form.prezzo.value)
qty=eval(form.qty.value)
totale=prezzo*qty
form.totale.value=totale
}
// End -->
</SCRIPT>
<BODY>
<FORM>
<input type=text size=4 name="prezzo">&nbsp;
<SELECT name= qty onchange=prezzo_totale(form); size="1">
     <option selected 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>&nbsp; <input type "number" value=0 name="totale" size=9>
<input type="button" value="Acquista" onClick="prezzo_totale(this.form)">
</FORM>
</body>
</html>

 ha scritto nel messaggio
news:8utikv$657$1...@pluto.sm.dsi.unimi.it...

qty=document.forms[0].qty.options[document.forms[0].qty.selectedIndex].value
andreotta fabiano
WebMªster ATI POWER s.n.c.
andr...@atipower.it
http://www.atipower.it
http://www.aticommerce.com
http://www.afdsoftware.freeweb.org
http://www.jsdir.com
http://www.javascript.3000.it

NS 4.x (ma non NS6 e Mozilla) non è in grado di leggere il value di una
SELECT, ma solo il value della OPTION selezionata
quindi la linea
    prezzo=eval(form.prezzo.value)
va sostituita con
    prezzo=eval(form.prezzo.options[form.prezzo.selectedIndex].value)
c'è qualche errore poi nel tuo codice (anche se non preclude il
funzionamento della pagina):
    <input type "number" value=0 name="totale" size=9>
manca l'uguale ('=') e poi 'number' non e' un type valido. Viene usato il
default type="text".
il commento seguente e' inutile, perche' non hai iniziato lo script con
inizio di commento html (che a dire il vero ormai non serve proprio piu',
visto tutti i browsers da tempo riconoscono il tag SCRIPT)
    // End -->
ti consiglio poi di dichiarare le variabili esplicitamente all'interno della
tua funzione, per evitare collidano con eventuali variabili omonime con
scope differente.
function prezzo_totale(form)
{
 var prezzo=eval(form.prezzo.options[form.prezzo.selectedIndex].value);
 var qty=eval(form.qty.value);
 var totale=prezzo*qty;
 form.totale.value=totale;
}
volendo poi esagerare potresti poi usare adottare alcune raccomandazioni:
* termina sempre le linee di codice JavaScript con un 'puntoevirgola'
* nel tag SCRIPT usa il MIME type al posto del vecchio attributo 'language':
    <script type="text/javascript">
* racchiudi sempre tra doppi apici i valori degli attributi html:
    value="1"
* agli elementi html con un name associa sempre anche un id omonimo
* scrivi i tag html in minuscolo
ciao
    Federico Sasso &8v>
 
http://www.crt.unige.it/jsSQL
    The jsSQL Project - JavaScript Database and SQL Engine

Sbagli il riferimento alla opzione selezionata nella lista; il
riferimento da te usato e' una scorciatoia inventata/usata da IE; il
riferimento corretto e':
qty=eval(form.qty.options[form.qty.selectedIndex].value)
Saluti, Paolo


Grazie a tutti