J'ai créé un élément à l'aide de document.getElementsByClassname et souhaite ajouter un événement onclick à cet élément, afin que, lorsque quelqu'un clique sur cet élément, la fonction onclick soit appelée.
J'ai essayé avec écouteur d'événement, mais cela fonctionnera même si je ne clique sur aucune fonction. En utilisant jQuery, nous pouvons le faire en liant un événement click, mais mon exigence est en javascript /
Merci!
element.addEventListener("click", alert('clicked'), false);// Add onclick eventListener
var element= document.getElementsByClassName('classname');
Je suis choqué de voir que plus d'une personne répondant à la question pense que getElementsByClassName
vous donnera un élément. Sérieusement?
Ok, parlons de la solution:
getElementsByClassName
renvoie en fait une HTMLCollection
, même si vous ne possédez qu'un seul élément avec ce nom de classe dans le DOM, vous devez donc le récupérer avec l'index 0.
var element = document.getElementsByClassName('classname')[0];
element.addEventListener("click", function(e) {
alert('something');
}, false);
Alternativement, comme vous n'avez qu'un seul élément avec le nom de classe, vous pouvez utiliser querySelector
en toute sécurité, ce qui renverra le premier élément de correspondance.
var element = document.querySelector('.classname');
^
element.addEventListener("click", function(e) {
alert('something');
}, false);
Veuillez noter le point dans le code ci-dessus. querySelector
accepte la chaîne de sélecteur CSS en tant que paramètre.
Essaye ça:document.getElementsByClassName
renvoie toujours un tableau d'éléments.
var element= document.getElementsByClassName('classname');
for(var i=0;i<element.length;i++){
element[i].addEventListener("click", function(){alert('clicked')}, false);
}
Vous devez passer la référence d'une fonction au lieu d'ajouter une alerte en ligne.
var element= document.getElementsByClassName('classname');
function doSomething() {
alert('clicked')
}
// add event listener to element
element.addEventListener("click", doSomething, false);
J'ai pu ajouter un événement onclick à un élément en utilisant le code javascript suivant
list_title = document.createElement('UL');
list_title.onclick=function() {
// place your code here
};
Please try the following:
var rows = 3;
var cols = 3;
var defaultVal=0;
var mainDiv=document.getElementById("mainDiv")
var arr = []
for (var i = 0; i < rows; i++) {
arr[i] = [];
for(var j=0;j<cols;j++){
arr[i][j]=defaultVal++;
var element=document.createElement("input");
element.type="button";
element.className="left";
element.addEventListener("click", testFunction, false);
element.value=arr[i][j];
mainDiv.appendChild(element);
}
}
function testFunction(){
alert('hi')
}
//Use element.addEventListener("click", testFunction, false);
//Use testFunction and not testFunction() as this "()" invokes the function
Vous pouvez utiliser la méthode .attr()
jquery pour cela:
$('.classname').attr("onClick", "javascript:alert('clicked'); return false;");
JavaScript
var element= document.getElementsByClassName('classname');
element[0].onclick = function() { alert('Hello'); };//-- here i used "[0]" to refer first matched element
Vous pouvez utiliser une délégation d'événements ou DOMNode.matches.
document.addEventListener('click', function(e) {
if (e.target.className == 'classname') // if (e.target.matches('.classname'))
{
//do something
}
});