简体   繁体   English

在 class 上使用 addEventListener 不起作用

[英]Use addEventListener on a class not working

I am trying to convert my script using addEventListener with getElementById on a var for a getElementByClassName but this doesn't work.我正在尝试在getElementByClassNamevar上使用addEventListenergetElementById转换我的脚本,但这不起作用。 How to fix it?如何解决?

See my code看我的代码

Javascript: Javascript:

var input = document.getElementByClassName('myClass');

_slider.noUiSlider.on('update', function( values, handle ) {

    var value = values[handle];

    if ( handle ) {
        input.value = Math.round(value);
});

input.addEventListener('change', function(){
    _slider.noUiSlider.set([null, this.value]);
}, false);

HTML: HTML:

<input type="number" class="myClass">

This script work perfectly if I find my div with an ID , but not work with a CLASS .如果我发现我的 div 有一个ID ,但这个脚本不能与CLASS一起使用,这个脚本就可以完美地工作。

There is no getElementByClassName. 没有getElementByClassName。 There is getElement s ByClassName that returns a collection. 有一个getElement ByClassName返回一个集合。 If there is only one, than select the first index. 如果只有一个,则选择第一个索引。

var input = document.getElementsByClassName('myClass')[0];

Other option is querySelector 其他选项是querySelector

var input = document.querySelector('.myClass');

My guess is that you do not have just one element, but multiple, than you need to loop over the collection. 我的猜测是,您没有一个元素而是多个元素,而不需要遍历集合。

var inputs = document.getElementsByClassName('myClass');
//or
//var inputs = document.querySelectorAll('.myClass');
for( var i=0; i<inputs.length; i++){
    inputs[i].addEventListener("click", function() { console.log(this); } );
}

var input = document.getElementById('id_name')...here addEventListener will work because "id" will unique but in case of "class" there might be same values entered...so you have to select which element you want to manipulate...example ==> var input = document.getElementsByClassName('class_name')[0]...after this addEventListener will work. var input = document.getElementById('id_name')...这里 addEventListener 将起作用,因为“id”将是唯一的,但在“class”的情况下,可能输入了相同的值...所以你必须 select 你想要哪个元素操纵...示例 ==> var input = document.getElementsByClassName('class_name')[0]...在此之后 addEventListener 将起作用。

Hope this might help you:)希望这对你有帮助:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM