如何使用javascript向元素添加onclick事件

问题描述 投票:7回答:7

我已经使用document.getElementsByClassname创建了一个元素,并且想要向该元素添加一个onclick事件,这样当有人点击这个元素时,应该调用onclick函数。

我尝试使用事件监听器,但即使我没有点击任何功能,这也会执行。使用jQuery我们可以通过绑定click事件来做到这一点,但我的要求是在javascript /

谢谢!

element.addEventListener("click", alert('clicked'), false);// Add onclick eventListener 

var element= document.getElementsByClassName('classname');
javascript jquery dom
7个回答
13
投票

getElementsByClassName返回一个HTMLCollection,所以即使你在DOM中只有一个带有该类名的元素,你必须用索引0检索它:

var element = document.getElementsByClassName('classname')[0];
element.addEventListener("click", function(e) {
    alert('something');
}, false);

或者,由于您只有一个带有classname的元素,因此可以安全地使用querySelector,它将返回第一个匹配元素。

var element = document.querySelector('.classname');
                                      ^
element.addEventListener("click", function(e) {
    alert('something');
}, false);

请注意上面代码中的点。 querySelector接受CSS选择器字符串作为参数。


5
投票

试试这个: document.getElementsByClassName总是返回元素数组。

 var element= document.getElementsByClassName('classname');
 for(var i=0;i<element.length;i++){
      element[i].addEventListener("click", function(){alert('clicked')}, false);   
 }

2
投票

您必须传递函数的引用,而不是添加内联警报。

var element= document.getElementsByClassName('classname');
function doSomething() {
  alert('clicked')
}

// add event listener to element 
element.addEventListener("click", doSomething, false);

0
投票

您可以使用.attr() jquery方法:

$('.classname').attr("onClick", "javascript:alert('clicked'); return false;"); 

Try this

JavaScript的

var element= document.getElementsByClassName('classname');
element[0].onclick = function() { alert('Hello'); };//-- here i used "[0]" to refer first matched element 

Try with javascript


0
投票

您可以使用事件委派或DOMNode.matches。

document.addEventListener('click', function(e) {
   if (e.target.className == 'classname') // if (e.target.matches('.classname'))
   {
       //do something
   }
});

0
投票
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

0
投票

我能够使用以下javascript代码向元素添加onclick事件

list_title = document.createElement('UL');
list_title.onclick=function() {

    // place your code here
};
© www.soinside.com 2019 - 2024. All rights reserved.