Quote Originariamente inviata da KillerWorm Visualizza il messaggio
Ciao e benvenuto.


L'effetto visivo è quello, ma in realtà ripulisce tutti i campi tranne quello appena modificato. Chiaramente vedrai ripulire solo il precedente perché gli altri sono già vuoti.

Cerco di chiarirti quanto hai chiesto, ma non ti nascondo che queste sono delle nozioni di basi della programmazione, per cui credo che tu abbia sbagliato guida per iniziare. Magari dovresti iniziare da qualcosa di più basilare... o magari hai semplicemente saltato qualche capitolo in modo poco furbo

Comunque sia, il primo if è una semplice condizione che sostanzialmente considera tutti gli elementi che sono diversi da quello preso in esame (cioè quello che si riferisce alla variabile kanga passata alla funzione). Chiaramente va tenuto presente che siamo dentro un ciclo, il quale è impostato per creare un'iterazione sui 4 campi input nell'esempio.

Traducendo la condizione in italiano, possiamo dire che tutte le volte che la variabile i (incrementata durante il ciclo for) risulta non uguale ("!=") alla variabile kanga, argomento della funzione (decrementata di 1)*, cioè dall'indice riferito al nome del campo che ha richiamato la funzione, allora il valore del campo (considerato in riferito all'iterazione corrente del ciclo) viene vuotato.
Se tale condizione non è soddisfatta, significa che si tratta del campo sul quale si sta agendo, per cui avverrà l'azione definita dentro il blocco else.

* la variabile kanga avendo 1 come primo valore, in riferimento agli elementi considerati, viene decrementata di 1 per poterla correttamente comparare col valore di i che invece parte da 0.

Questo è dovuto a due fattori:
- fattore computazionale - generalmente in programmazione un vettore (array, collection o altri tipi di liste di elementi), come è quello restituito da getElementsByTagName(), è definito in base 0, cioè il primo elemento ha indice 0 e non 1. Non è sempre così ma convenzionalmente questa è la norma.
- fattore umano - d'altra parte, per una questione di leggibilità del codice, i programmatori usano spesso definire il primo elemento, di una determinata lista, in maniera più "umana" partendo da 1 anziché 0.

Per cui da script sarà necessario "correggere" opportunamente questa differenza, come è stato fatto, per poter comparare correttamente i valori considerati.

Non ti nego che ci sono svariati modi (anche più stringati, ottimizzati, nonché più scalabili) per ottenere lo stesso risultato ma con un codice magari più pulito (senza voler togliere nulla a quella guida).





PS: consiglio di utilizzare titoli maggiormente autodescrittivi quando apri nuove discussioni.
PPS: giusto per informazione, purtroppo c'è attualmente qualche problema con la piattaforma del forum, per cui non fare caso ad eventuali errori di codifica delle lettere accentate quando posti sul forum.

Innanzitutto grazie per la risposta, comunque si ho capito che lui va a "pulire" tutti i campi tranne quello che ho modificato, non capisco perchè lo fa solo quando modifico un valore e non quando cambio da un campo e l'altro, dato che la funzione è richiamata ogni volta che clicco su un campo diverso.. io credevo che nella variabile "kanga" ci entrassero i numeri da 1 a 4 e poi con l'IF mi va a fare la comparazione con l'indice "i", e questi cambiano anche se non modifico più nessun valore, invece sembra che faccia la comparazione col valore contenuto in kanga(n) e col valore contenuto in "i".
Non so se sono riuscito a esprimere correttamente il mio dubbio, mi mancano i vocaboli corretti probabilmente .