2017-08-03 2 views
2

J'essaie d'utiliser une méthode EventListener avec l'événement click pour ajouter simplement un élément à la liste <ul>. J'essaye d'invoquer la fonction avec l'événement click sur le noeud d'élément de bouton, mais la fonction est invoquée chaque fois que j'actualise/charge un site Web.javascript eventlistener fire immédiatement au lieu de sur l'événement

function addElementToList() { 
    var navigationPanel = document.getElementsByTagName('ul')[0]; 

    var newElementOnList = document.createElement('li'); 
    var newElementsText = document.createTextNode('About'); 

    newElementOnList.appendChild(newElementsText); 
    navigationPanel.appendChild(newElementOnList); 
} 

var elButton = document.getElementById('myButton'); 
elButton.addEventListener('click', addElementToList(), false); 

Pourquoi la fonction addElementToList s'exécute-t-elle chaque fois que j'actualise/charge un site Web?

+0

'elButton.addEventListener (clic, addElementToList, false);' – Pointy

Répondre

3

Lorsque vous ajoutez l'écouteur d'événement,

elButton.addEventListener('click', addElementToList(), false); 

Vous appelez la fonction. changer à

elButton.addEventListener('click', addElementToList, false); 

Et vous devriez être bon à faire.

0

Ce que vous avez, c'est d'ajouter le résultat de addElementToList (lorsque la fonction est appelée) à l'écouteur d'événement. Pas la méthode elle-même.

Pour mettre la méthode elle-même que vous voulez utiliser le nom sans parenthèses

elButton.addEventListener('click', addElementToList, false); 

au lieu de

elButton.addEventListener('click', addElementToList(), false); 
+0

Merci :) Une question cependant. Que se passerait-il si j'avais une fonction qui nécessite des paramètres comme addElementToList (par a, par b)? Je suppose que la fonction avec des paramètres ne retournerait pas un résultat immédiatement non? –

+0

il serait exécuté immédiatement les paramètres seront 'undefined'. paramètre dans JS est principalement une suggestion et non une exigence –