form."oggetto" + NumeroNews.value;
L'errore probabilmente è questo. Quando "discendi" la gerarchia degli oggetti del documento, devi fare riferimento sempre a oggetti (Object) fino a che non arrivi a una loro proprietà o a un loro metodo.
Nel codice qui sopra invece, passi per un oggetto form (che converrebbe identificare sempre con document.form) e poi tenti di "concatenare" un oggetto formato da una stringa ("oggetto") a cui fai seguire un numero. JavaScript non riesce a determinare correttamente la "catena" di oggetti in questo modo. Devi prima "valutare" l'oggetto complessivo e poi leggerne la proprietà value, in questo modo:
codice:
var campo = eval("document.form.oggetto" + NumeroNews);
campo.value;
Così facendo, imposti una variabile campo che è un oggetto di tipo Object. Il metodo eval() serve a "valutare" un'espressione ed è utile nel tuo caso. Infatti, esso riceve come argomento un'espressione composta da una stringa ("document.form.oggetto") e da una variabile (NumeroNews).
eval() esegue prima l'espressione (concatenando la stringa e la variabile e poi la valuta. Un'espressione del genere (sapendo che NumeroNews è un numero) genera una cosa come:
document.form.oggetto5
che una volta valutata da eval() viene riconosciuta come un oggetto (l'oggetto "oggetto5" contenuto nel form). Per finire, da questo oggetto leggi la proprietà value con campo.value. Non puoi far leggere value all'interno di eval(), perché quel metodo a te serve per "creare" un oggetto partendo da una concatenazione di una stringa e un numero. Solo successivamente puoi accedere alle proprietà e ai metodi dell'oggetto così determinato.
Una cosa...se puoi, evita di chiamare il form "form". Form è un oggetto JavaScript e non dovresti usare questa parola come nome di un oggetto. Chiamalo "modulo" al limite...
Esiste anche un'alternativa più semplice, che non ti costringe a "passare" per l'oggetto form e a usare il metodo eval(). Basta che tu assegni ai campi del tuo form un attributo id invece di un attributo name. Quindi puoi accedere ad un campo del form in questo modo (oltretutto, usando il DOM standard W3C):
codice:
document.getElementById("oggetto" + NumeroNews).value
Il metodo getElementById() accetta come parametro sia l'id "puro" di un oggetto che l'id di un oggetto determinato da una concatenazione (in pratica, sostituisce quello che prima facevi con eval()). Come vedi dal codice qui sopra, non sono passato attraverso l'oggetto form per accedere al campo che mi interessa, ho richiamato l'id del campo tramite la concatenazione di una stringa e una variabile numerica e ho letto immediatamente la sua proprietà value.
Chiaramente, i tuoi campi dovranno avere degli id come: oggetto1, oggetto2, ecc.
Spero di essere stato chiaro nella spiegazione.