0
votes

Pourquoi Javascript effectue-t-il un événement "Cliquez sur" lorsque je ne clique pas sur l'article?

J'ai ajouté EventListener code> sur DOM code> à l'aide de JS code>, mais ces écouteurs déclenchent, dès que la page est chargée et qu'elle n'a pas Sens, quand je clique sur cet article.

Ceci est mon code, où j'ajoute EventListener code> à l'élément: p>

 function logThis(me) {
     console.log(me);
 }


5 commentaires

Vous appelez clairement la fonction: logThis (this) .


@Teemu non, je n'appelle pas cette fonction nulle part dans le code source


Il vous suffit de passer le nom de la fonction dans l'appel AddeventListener. Pas besoin de l'invoquer. TABLOW.ROWS [R] .Cells [2] .AddeventListener ("Cliquez sur", Logthis);


Wut? Je viens de copier-coller l'invoke dans mon commentaire de votre exemple!


@CODEVERINE OUI! vous avez raison; S'il vous plaît, écrivez-le dans les réponses :)


4 Réponses :


1
votes

J'ai eu le même problème. Vous devez créer une fonction dans AddeventListener et appeler votre méthode. XXX

qui devrait faire le tour.


0 commentaires

2
votes

Ajout de mon commentaire en tant qu'Awer ici pour aider les autres débutants à entrer dans ce numéro. Ici, vous avez mélangé les deux AddeventListener Signature et la façon dont vous ajoutez Onclick Handlers en HTML.

Lorsque vous attachez un événement d'événement à l'aide de JS, vous n'avez pas à appeler la fonction (c'est-à-dire non nécessaire d'utiliser la parenthèse). Donc, votre code sera comme ça: TABLOWS.ROWS [R] .Cells [2] .Addeventlistener ("Cliquez sur", Logthis);

Lorsque vous attachez un gestionnaire d'événements de HTML, vous faites ceci: Cliquez sur moi Ici, vous devez transmettre la chaîne avec l'invocation de la fonction.


0 commentaires

1
votes

Vous pouvez également utiliser un écouteur d'événement global sur votre table avec une délégation d'événement

p>

<table id="my-Table">
  <tbody>
      <tr><td>aa</td><td>bb</td><td>cc</td><td>dd</td></tr>
      <tr><td>ee</td><td>ff</td><td>gg</td><td>hh</td></tr>
      <tr><td>ii</td><td>jj</td><td>kk</td><td>ll</td></tr>
    </tbody>
</table>
<p> this get click only on row 2 ( cc / gg / kk ) </p>


0 commentaires

0
votes

Malgré la fondation de la question, pourquoi mon code ne fonctionnait pas (j'invoque la fonction), je n'ai toujours pas pu ajouter EventListener CODE> à l'élément DOM code>. Ainsi, j'ai essayé de définir attribut code> sur cet élément à l'aide de javascript code> et maintenant ça marche. J'ai bien peur que ce n'est pas une meilleure solution, mais il est toujours un peu un moyen d'accomplir mon objectif.

let table = document.getElementById('data_table' + deal);
for (let r = 0, n = table.rows.length; r < n; r++) {
     table.rows[r].cells[2].setAttribute("onclick", "logThis(this)");
}


0 commentaires