Newsgroup: it.comp.lang.javascript
Titolo: Piccolo problemino sulle tabelle

Ciao a tutto ng. ^^
Ho un piccolo script che mi crea una tabella in automatico di m righe per n
colonne,
Per fare questo ho fatto cosě:
for (i=0;i<=m;i++) {
   document.write("<tr>");
   for (j=0;j<=n;j++) {
        document.write("<td><input type=text name=casella"+i+j+"
OnChange='controlla(casella"+i+j+")' size=7></td>");
        }
   document.write("</tr>");
}
Il mio problema č che quando richiamo la funzione controlla, mi viene
resituito un'errore quando tento di
ricavare il contenuto della casella di testo in cui mi trovo a scrivere come
se il nome della casella non fosse stato scritto
correttamente.
Spero di essermi spiegato bene.
Ciao e grazie
-------
Luca

correttamente.
il riferimento ad un oggetto della form completo č:
<nomeform>.<nomecampo>.value
se ti trovi in un'altro frame:
top.<nomeframe>.<nomeform>.<nomecampo>.value
quindi immaginando che il nome del form che racchiude la tabella di
elementi text sia "tabella", l'istruzione completa per il richiamo
della funzione controlla č: (riporto la riga)
OnChange='controlla(tabella.casella"+i+j+")' size=7></td>");
--
Ciao!
Davide

 OnChange='controlla(tabella.casella"+i+j+")' size=7></td>");
Ho provato a fare così come mi dici, però adesso quando scrivo un numero e
al momento di richamare la funzione Controlla
mi dà questo errore document.all[...].value è nullo o non è un'oggetto
(penso si riferisca alla funzione controlla)
Per facilità questa è la funzione controlla
function controlla(elemento){
var i=ctrlnumero(document.all[elemento].value);
var num=document.all[elemento].value;
if (num == null)
{ num = "0";
}
if(i != 1){
document.all[elemento].value = formatfloat(num,2);
return;
}
else{
document.all[elemento].value = "";
}
}
Grazie ancora e ciao
-------
Luca

var num=document.all[elemento].value;
nella sintassi di questa riga c'è qualcosa che non va...
Per come la metti tu dovrebbe essere:
document.all[index_numerico].value.
penso che la sintassi corretta sia:
 var num=document.nomeform.nomecampo.value
quindi:
 num=elemento.value
se hai chiamato la funzione con controlla(nomeform.nomecampo)
ti direi quindi di sostituire tutto e provare.
IMHO, ma sono sicuro che così funziona.
--
Ciao!
Davide

La riga:
document.write("<td><input type=text name=casella"+i+j+"
OnChange='controlla(casella"+i+j+")' size=7></td>");
ha dei problemi probabilmente nella dizione
controlla(casella
casella NON e' passato come stringa: č all'interno di una stringa, ma deve
esserlo anche per la funzione
ciontrolla mi par di capire.
prova ad invertire i nestaggi e a usare le escape:
document.write('<td><input type=text name=casella'+i+j+'
OnChange="controlla(\'casella'+i+j+'\')" size=7></td>');
prova con questo, facci sapere poi
ciao
TrueLies
http://www.unitedscripters.com/
-- 
Posted from  [212.141.82.97] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 IMHO, ma sono sicuro che così funziona.
SI funziona, Grazie ancora ^_^
Solo adesso ho un'altro problema ossia non sò come realizzare la somma delle
righe e delle colonne
Io pensavo di fare una cosa del genere
var i=0;
var j;
var numero;
while (i<=n)
{ numero = "";
   for (j=0;j<=m;j++)
   { numero = numero + document.all["controllo" +i+j].value;
   }
  document.all["totaleriga" + i].value = numero;
}
Però credo che mi dia il solito errore per quanto riguarda il document.all
Mi sapreste aiutare?
Grazie e ciao
---------
Luca