Bonjour,
Je développe un petit moteur de recherche acceptant la saisie semi automatique (autocomplétion) et je suis tombé sur une chose qui me chatouille l'esprit...Peut etre pourrez vous l'éclaircir...

Alors voici la ligne qui me choque :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
xhr.onreadystatechange = processStateChange;
Et voici le code associé à processStateChange :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function processStateChange(){
	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
	if (xhr.readyState == 4) {
		// only if "OK"
		if (xhr.status == 200) {
			leselect = xhr.responseText;
			// On se sert de innerHTML pour rajouter les options a la liste
			document.getElementById('laposte').innerHTML = leselect;
		} else {
			alert("Il y a un probleme:\n" +
			xhr.statusText);
		}
	}
}
Le truc, c'est que ce dernier morceau de code est une fonction (à moins que je me trompe...)
Pourtant quand je fais "xhr.onreadystatechange = processStateChange;" il n'y a pas de parenthéses à processStateChange, ce qui signifie dans la logique de programmation que c'est une variable...
En fait, ca marche nickel de cette facon mais à partir du moment ou je mets des parenthéses, c'est à dire xhr.onreadystatechange = processStateChange(); mon script ne fonctionne pas sous IE et fonctionne très mal sous firefox...

J'aurais voulu savoir pourquoi... Est-ce une instruction evenementielle (du genre onClick et les choses comme ca) ??

Merci d'avance,

Laurent