PDA

View Full Version : [JS] Non mi scrive tutti i valori


Zibimon
09-01-2010, 17:22
Ammetto di non essermi mai cimentato con numeri e JavaScript e di lavorare con javascript da....boh...un mesetto e, dopo tutto, ho sempre "lavorato" con altra roba, mai numeri...
Vabè, discorsi a parte, volevo fare un miscro-script per calcolarmi i vari divisori di un numero da utilizzare poi con WM come se fosse un uber bigliettino . Ci sono riuscito a metà. Infatti se scrivo
for (i=1; i<=val; i++)
a schermo mi viene dato come divisore il numero scritto ma non i vari divisori mentre se scrivo
for (i=1; i<val; i++)
viene scritto a schermo un numero che sarà la metà esatta del numero dato.
Sapreste darmi un consiglio?
<html>
<head>
<title>Home</title>
<script type="text/javascript">
function calc() {
val=frm.val.value;
res=0;
i=0;
sep="\n";
if (isNaN(val)){
alert ("Inserisci un numero!");
return false;
}
else if (val<0) {
alert ("Numero non valido!");
return false;
}
else if (val>0) {
document.forms['frm'].elements['num'].value=val;
for (i=1; i<=val; i++) {
if (val%i==0) {
document.forms['frm'].elements['div'].value=i+sep;
}
}
}

}

</script>
</head>
<body>
<form name="frm">
<input type="text" name="val">
<input type="button" name="run" value="Ok" onClick="return calc()">
<table width="200" border="1">
<tr>
<td><b>Valore:</b></td>
<td><textarea readonly="readonly" name="num"></textarea></td>
</tr>
<tr>
<td><b>Divisori:</b></td>
<td><textarea readonly="readonly" name="div"></textarea></td>
</tr>
</table>
</form>
</body>
</html>Grazie

wingman87
09-01-2010, 19:08
Perché all'interno del ciclo sovrascrivi ogni volta il contenuto del div. Se vuoi visualizzare tutti i risultati devi concatenarli

Zibimon
09-01-2010, 19:21
Perché all'interno del ciclo sovrascrivi ogni volta il contenuto del div. Se vuoi visualizzare tutti i risultati devi concatenarliCome posso concatenarli? i, anche se varia grazie a for, è singolo :confused:

wingman87
09-01-2010, 19:40
Ad esempio puoi inizializzare il contenuto del div ad una stringa vuota prima del ciclo e poi nel ciclo fare:
document.forms['frm'].elements['div'].value=document.forms['frm'].elements['div'].value+i+sep;
invece di
document.forms['frm'].elements['div'].value=i+sep;

Zibimon
10-01-2010, 06:55
Ad esempio puoi inizializzare il contenuto del div ad una stringa vuota prima del ciclo e poi nel ciclo fare:
document.forms['frm'].elements['div'].value=document.forms['frm'].elements['div'].value+i+sep;
invece di
document.forms['frm'].elements['div'].value=i+sep;Funziona. L'errore era davvero stupido. Il bello è che quando mi son messo a fare lo schizzo dello script avevo inizializzato il contenuto come da dovere....me ne son però dimenticato man mano che scrivevo.
Grazier davvero :D