Come al solito iniziamo dalla visualizzazione dell'esempio; segue poi il codice con relativa spiegazione.
Come si potrà vedere facendo una prova, la prima volta che il tasto OK viene premuto vengono aggiunti tanti campi quanti indicati nella casella di testo; la seconda volta invece si riceve un messaggio d'errore: questo per evitare errori o inutili duplicazioni nell'invio.
PASSO UNO
Inserire il seguente codice all'interno del tag <BODY> :Quante persone? Inserisci il numero nella casella di testo e premi il tasto OK <form name="form1"><input type=text name="num" size=3><input type=button name="bottone" value="OK" OnClick="javascript: prepara(document.form1.num.value)"></form>
<span id="spazio"></span>
PASSO DUE
Preparare lo script, che va inserito fra i tags <HEAD> ed </HEAD> della pagina HTML:<script language="JavaScript"> | Dichiarazione del fatto che si sta inserendo codice JavaScript | ||
var lista='' | Si inizializza la variabile di nome lista, nella quale saranno memorizzati i tag necessari per visualizzare i campi. | ||
var volte=0 | Si inizializza la variabile di nome volte, nella quale sarà memorizzato il numero di volte che è premuto il tasto OK | ||
function prepara(campi) { | Dichiarazione della funzione di nome "prepara". Dentro la parentesi abbiamo scritto il parametro di nome "campi" che, come vedremo, fornirà il valore di input alla funzione stessa. La funzione è seguita dalla necessaria parentesi graffa di apertura. | ||
volte++ | La variabile volte viene incrementata di 1: questo serve a memorizzare il numero di volte che l'utente preme il tasto OK. | ||
if (volte>1) window.alert('non è possibile aggiungere i campi due volte; eventualmente aggiornare la pagina') | Se l'utente ha premuto il tasto OK viene aperta una finestra di avviso e si impedisce che si aggiungano nuovi campi a quelli già visualizzati. | ||
else { | Altrimenti: da adesso in poi inizia il codice per l'aggiunta dei campi | ||
lista+='<form name="form2" action="Mailto:_" method=post ENCTYPE="text/plain">' | Alla variabile di nome "lista" viene assegnato il codice che serve per inserire un form in una pagina web. Dopo Mailto: inserire l'inidizzo di posta elettronica del destinatario | ||
for(i=1; i<=campi; i++) { | Inizio del ciclo enumerativo: il contatore i varia da uno al numero di campi introdotto dall'utente nella casella di testo; il suo incremento è di uno. | ||
lista+=' nome <input type=text name= "nome'+i+ '" size=20> cognome <input type=text name= "cognome'+i+'" size=20> indirizzo <input type=text name="indirizzo'+i+ '"size=40><br> ' | La variabile lista viene incrementata di tre campi: il primo contiene il nome, il secondo il cognome ed il terzo l'indirizzo. Notare come la stringa che si aggiunge alla variabile sia composta di parti fisse e di parti variabili concatenate con il +. Ad esempio, quando i=1 la stringa diventa: 'nome <input type=text name= "nome1" size=20> cognome <input type=text name= "cognome1" size=20> indirizzo <input type=text name="indirizzo1"size=40><br>'. Dopo l'immissione dei tre campi viene inserito il tag <br> che serve per andare a capo. Con questo semplice espediente è possibile dare un nome univoco ad ogni campo. | ||
} | Chiusura del ciclo enumerativo | ||
lista+='<input type="submit" name="Invia" value="INVIA"> <input type="reset" name="Cancella" value="CANCELLA"></form>' | Al termine del ciclo si inseriscono i bottoni per l'invio del form o per l'eventuale cancellazione dei campi: questi elementi infatti devono essere inseriti una sola volta. | ||
if(document.all) | Se document.all esiste, allora il browser è Explorer. Come è noto, il codice scritto per Explorer non è sempre compatibile con quello scritto per Netscape e dunque siamo costretti a scrivere istruzioni diverse per i due browsers. | ||
{ | Inizio della selezione binaria | ||
document.all('spazio').innerHTML=lista; | I tag HTML saranno interpretati come codice ed inseriti nell'elemento di nome spazio attraverso il metodo innerHTML. spazio è il nome dello span che inseriremo nella pagina. | ||
} | Parentesi di chiusura della selezione binaria. | ||
else if(document.getElementById){ | Se invece document.getElementById esiste, allora il browser è Explorer 6 o Netscape 6 o Mozilla | ||
{ | Inizio della selezione binaria | ||
document.getElementById("spazio").innerHTML =lista } | Cambia la sintassi, ma l'effetto è sempre quello di inserire il codice nello span di nome "spazio".
Viene quindi chiusa la selezione binaria attraverso la parentesi graffa. | ||
else { alert("il tuo browser non supporta questo metodo") } | Siamo all'ultima alternativa: il codice precedente non viene riconosciuto e l'utente è avvertito del malfunzionamento del metodo. | ||
} | Parentesi di chiusura dell'alternativa (else) | ||
} | Parentesi di chiusura della funzione prepara(campi) | ||
</script> | Fine script e chiusura dell'intestazione del documento. | ||
NOTA: come in tutti gli scripts javascript, occorre fare molta attenzione alla sintassi per non generare un messaggio d'errore. In particolare, javascript distingue fra maiuscole e minuscole.
|
©2005 www.webfract.it