3) Funziona solo su Explorer
Fondamentalmente la causa di tale errore è una: explorer usa proprietà... proprietarie, ovvero valevoli solo su quel browser. Molti programmatori si riferiscono ai vari elementi in questo modo: document.nomeform.nomeinput.value (ad esempio per leggere il contenuto di un campo input dentro un form).
Questo modo non è approvato dal w3c: per riferirsi ad un oggetto il modo corretto è
- Assegnare un attributo id all'oggetto - ad es. <div id="testo"></div> -
- Riferirsi all'oggetto con document.getElementById - ad es. document.getElementById('testo') -
Un errore comune è anche l'uso di document.all, quando la collection all è definita solo per Explorer.
4) Il valore non è quello atteso
In alcune funzioni viene spesso eseguito un calcolo con numeri e dati che sono convertiti da un campo di un form.
In generale, se il risultato di una variabile non è quello atteso basta semplicemente fermare l'esecuzione del codice con degli alert su cui vi farete stampare a video di volta in volta il valore della variabile dopo ciascuna istruzione.
5) Attenzione ai tipi
Un errore comune nei costrutti if è l'errore di tipo: ad esempio:
codice:
if (valore == "true") { ...
se si sta controllando un valore logico (booleano) questo confronto è errato: true va senza apici, a meno che voi non stiate effetivamente controllando il valore di una stringa
codice:
if (valore == "undefined") { ...
vale lo stesso discorso: undefined va senza apici
6) Un pò di fantasia...
Un altro errore che si presenta con una certa frequenza è l'uso di parole riservate nel codice. L'errore più comune è
[code]
<form name="form">
<input type="text" name="input" />
</form>
[code]
associato al classico document.form.input.value
Qui javascript fa ovviamente confusione perchè nomi riservati nel DOM vengono utilizzati come valori per attributi. Nel momento in cui si cerca di accedere al campo del form in quel modo si avrà un errore.
Usate la fantasia (e un pò di logica): date attributi id e name in base al significato degli elementi e in ogni caso evitate di usare parole chiave già definite.
Buon debug