1

我正在尝试document.getElementsByClassName('classname').click();,但它不会触发类的点击。这是为什么?

4

5 回答 5

5

这是为什么?

因为该getElementsByClassName方法返回一个 DOM 元素数组。在数组上调用 click 方法几乎没有意义。如果你想调用这个 click 方法,你可以在数组的某个特定元素上执行此操作。例如,如果您想在第一个元素上调用它(当然假设数组不为空):

document.getElementsByClassName('classname')[0].click();

但既然你已经用 jQuery 标记了你的问题,你可能只想写:

$('.classname').click();
于 2013-02-16T23:00:50.143 回答
0

因为这将返回一组元素,通常是一个HTMLCollection. 然后你必须遍历它:

https://developer.mozilla.org/en-US/docs/DOM/document.getElementsByClassName

纯Javascript:

var elements = document.getElementsByClassName('xxx');

for(var i = 0; i < elements.length; i++)
{
    elements[i].addEventListener('click',function(){window.alert('Class name is xxx');},false);
}

查询:

$(document).ready(function(){
    $('.xxx').on('click',function(){window.alert('Class name is xxx');});
});
于 2013-02-16T23:01:08.163 回答
0

document.getElementsByClassName('classname')返回一个 DOM 节点数组。

尝试:

var nodes = document.getElementsByClassName('classname');
for(var i = 0; i < nodes.length; i++) {
     nodes[i].click();
}

另请记住,getElementsByClassName并非每个浏览器都支持。

于 2013-02-16T23:01:09.027 回答
0

试试这个:

$(function() {
  $('.classname').click();
});
于 2013-02-16T23:01:41.650 回答
0

您的代码将与

document.getElementsByClassName('classname')[0].click();

但是,如果你使用 jquery 那么

 $(document).ready( function(){
       $('.classname').on('click',function(event){});
    });

或者干脆$('.classname').click();

于 2013-02-16T23:01:48.267 回答