getElementsByClassName不起作用,但Id工作正常

时间:2018-06-01 17:54:56

标签: getelementsbyclassname clonenode

我试图通过类名获取一些元素并且它不起作用。但是,如果我按ID更改为获取元素,则可以正常工作。想了解为什么Class Name方法不起作用。 这是一个JSFiddle:http://jsfiddle.net/kXmpY/2681/ 如果我改为ID,它就可以了。我错过了什么?

HTML:

value in (tup[1] for tup in my_set)

JS:

<a href="#" class="cloneLink">Click me</a>
<div class="duplicator"> 
<label for="newInput">Label</label>
<input type="text">
</div>

2 个答案:

答案 0 :(得分:0)

document.getElementsByClassName将返回一个名为HTMLCollection的对象数组。要使代码正常工作,您需要确保其长度大于零,然后访问元素并附加事件。

let elements = document.getElementsByClassName("cloneLink");
if(elements.length){
  elements.forEach( element => element.addEventListener("click" , duplicate))
}

答案 1 :(得分:0)

document.getElementsByClassName返回HTMLCollection而不是单个元素。

你需要写

var original = document.getElementsByClassName("duplicator")[0];

即如果你有一个你想要操作的类名的单个元素。

  

getElementsByClassName()方法返回具有所有给定类名的所有子元素的类数组对象。

详细了解此here