web-dev-qa-db-fra.com

event.target.name n'est pas défini

J'essaie d'utiliser e.target.name pour réagir afin de définir l'état comme auparavant ce sera la bienvenue. merci!

<li 
    onMouseEnter = {this.handleMouseEnter.bind(this)}
    name ='HOME'
    id="some id"
    style={main.element}>HOME</li>

mon gestionnaire d'événements n'a qu'un débogueur pour que je puisse jouer avec

handleMouseEnter(e){
    debugger
}

et quand j'essaie d'obtenir la valeur de la propriété de nom je reçois indéfini

e.target
//<li name=​"HOME" id=​"some id" style=​"padding:​ 10px;​">​HOME​</li>​
e.target.name
//undefined
e.target.id
//"some id"
2
Nilos
  • Les champs de formulaire sont les éléments qui doivent utiliser l'attribut name
  • Le moteur JS définira automatiquement cet attribut dans les éléments de formulaire (input, select, etc.).

document.querySelector('li').addEventListener('click', function(e) {
  console.log('Directly: ' + e.target.name);// prints null
  console.log('Using getAttribute: ' + e.target.getAttribute('name')); // prints ele
});

document.querySelector('input').addEventListener('click', function(e) {
  console.log('Directly: ' + e.target.name);
  console.log('Using getAttribute: ' + e.target.getAttribute('name')); // prints ele
});
<input name="ele" placeholder="Click me!">
<li name="ele">Click me!</li>


4
Ele

name est un attribut et nécessite que la fonction getAttribute(...) soit récupérée. Comme @Ele l’a fait remarquer, la solution proposée serait

var name = e.target.getAttribute('name'); //'HOME'
4
Synch