2013-03-27 7 views
1

Je suis nouveau. J'ai beaucoup lu sur stackoverflow, mais c'est ma première question. J'espère que ce n'est pas stupide. Je sais que la foule peut parfois être dure et souvent très méritante. :)Pourquoi 'this.value' fonctionne-t-il mais e.value ne fonctionne pas?

Dans le code suivant, lorsque vous entrez du texte dans la première zone de saisie, l'alerte ne montre pas ce que vous entrez. Cependant, dans la deuxième case, lorsque vous saisissez quelque chose, l'alerte le montre.

La différence réside dans l'utilisation de 'this.value' par rapport à 'e.value'. Je pense qu'ils devraient tous les deux fonctionner puisque 'e.value' fait référence à un élément et je pensais que 'this.value' le fait aussi, mais il manque quelque chose, évidemment, car il ne fait pas la même chose.

Merci d'avance.

<!DOCTYPE html> 
<html> 
<head><script> 
window.onload = function() {var e; 
    e = document.getElementById('eInput'); 
    if (!e.onkeyup) {e.onkeyup = function() {alert (e.value); }; } 
    e = document.getElementById('thisInput'); 
    if (!e.onkeyup) {e.onkeyup = function() {alert (this.value); }; } 
} 
</script></head> 
<body> 
<input type="text" id='eInput'></input><br><br> 
<input type="text" id='thisInput'></input> 
</body> 
</html> 

Répondre

1

Le e dans la fonction doit se référer à l'élément qui a déclenché l'événement. Vous devez le modifier en function (e) {alert (e.target.value); }; }

Maintenant le e est l'événement qui a déclenché la fonction onkeyup et vous pouvez accéder à la cible pour obtenir la valeur.

voir http://jsfiddle.net/yAaYX/

+0

Merci. Nouvelle technique pour moi. Je vais devoir étudier cela un peu plus. Cela fonctionne par votre exemple. Très appréciée! –

1

La raison pour laquelle la première entrée ne fonctionne pas - votre variable e est écrasé et il se pointe vers la 2ème entrée, qui est vide à ce moment-là.

Si vous supprimez les 2 lignes de la 2ème entrée, vous verrez il fonctionne très bien avec e.value - working example

Ou tout simplement donner les noms de variables différentes - e1 et e2-example

+0

Merci. e = élément. Je ne me suis pas rendu compte que le e étant changé après que j'assigne la fonction d'événement à l'élément eInput serait important. Comme il est réaffecté après que j'attribue l'événement au 1er élément. Ensuite, je réutilise simplement la variable pour assigner un événement au 2ème élément. Je vais devoir lire à ce sujet plus car je ne comprends pas pourquoi la réutilisation de la variable e est un problème ici. –

Questions connexes