简体   繁体   English

我自己的 javascript 类和 addeventlistener 模板不起作用

[英]My own javascript class and addeventlistener template not working

So here I am experimenting with native javascript.所以在这里我正在尝试使用原生 javascript。 What I am trying to achieve, but failed to do is to create some sort of shortcut for scenarios where I want to add an event listener to a div class.我试图实现但未能做到的是为我想将事件侦听器添加到 div 类的场景创建某种快捷方式。

Here I am trying to say: If the user clicked on a class then show an alert.在这里我想说:如果用户点击了一个类,然后显示一个警报。

Why doesnt my code work?为什么我的代码不起作用?

function click(red){
    var source = document.getElementsByClassName(red);
        for (i = 0; i < source.length; i++) {
            source[i].addEventListener('click', err, false);
        }
    function err() { 
    var x = 0;
    }
}

if (click('red')) {
    alert('rrr');
}

http://jsfiddle.net/y66wh26k/3/ http://jsfiddle.net/y66wh26k/3/

I would use document.querySelectorAll instead of document.getElementsByClassName because it is more versatile.我会使用document.querySelectorAll而不是document.getElementsByClassName因为它更通用。

But the main issue is that your click function actually wasn't returning anything, so your if(click('red')) would never execute.但主要问题是您的 click 函数实际上没有返回任何内容,因此您的if(click('red'))永远不会执行。 As well, your callback for the event listener being added wasn't really doing anything.同样,您对添加的事件侦听器的回调实际上并没有做任何事情。 So what I've done is made a callback argument, then passed that to addEventListener .所以我所做的是制作了一个回调参数,然后将它传递给addEventListener

 function click(selector, callback){ var source = document.querySelectorAll(selector); for (var i = source.length-1; i >= 0; --i) { source[i].addEventListener('click', callback, false); } } click('.red', function() { alert('rrr'); });
 <div class='red'>xxx</div> <div class='red'>xxx</div> <div class='red'>xxx</div>

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

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