繁体   English   中英

如何在类EcmaScript6中使用addEventListener?

[英]How can I use addEventListener in Class EcmaScript6?

我使用EcmaScript6,但不知道如何在Class中应用addEventListener。 我试图从类中声明一个var来调用方法EventListener并得到一个错误:/。 我还尝试了在类内部的addEventlistener,但我做不到。

控制台中的错误是因为我再次尝试新的替代方法。

不知道解决问题。 如何添加事件监听器?

<!-- language: lang-js -->
class Design{
transition(clickea, up, down){
    this.clickea = clickea;
    this.up = up;
    this.down = down;
    let cont = 0;
    let focus = document.getElementById(clickea);
    let content = document.getElementById(up);
    let content2 = document.getElementById(down);
    if(cont == 0){
        content.style.transform = "translateY(-1000%)";
        content2.style.transform = "translateY(0%)";
        cont++;
    }else{
        content.style.transform = "translateY(0%)";
        content2.style.transform = "translateY(-100%)";
        cont--;
    }
}
}

const design = new Design();
let enlance = document.getElementById('sign');
enlance.addEventListener('click', desgin.transition(enlance, loguin, 
registro));

Google控制台

eventos.js:11 Uncaught TypeError: Cannot read property 'style' of null
at Design.transition (eventos.js:11)
at eventos.js:24

要么

<!-- language: lang-js -->
class Design{
transition(clickea, up, down){
    this.clickea = clickea;
    this.up = up;
    this.down = down;
    let cont = 0;
    let focus = document.getElementById(clickea);
    let content = document.getElementById(up);
    let content2 = document.getElementById(down);
    focus.addEventListener('click', function(up,down){
        if(cont == 0){
            content.style.transform = "translateY(-1000%)";
            content2.style.transform = "translateY(0%)";
            cont++;
        }else{
            content.style.transform = "translateY(0%)";
            content2.style.transform = "translateY(-100%)";
            cont--;
        }
    });

}

}

const diseño = new Design();
let enlance = document.getElementById('sign');
let loguin = document.getElementById('loguin');
let registro = document.getElementById('registro');
diseño.transition(enlance, loguin, registro);


eventos.js:10 Uncaught TypeError: Cannot read property 'addEventListener' of null
    at Design.transition (eventos.js:10)
    at eventos.js:29
transition @ eventos.js:10

我的问题是,如何在模板方法Class中使用侦听器。

欢迎来到Stackoverflow!

您似乎正在看到此错误,因为您的类需要一个字符串,但是您正在提供一个DOM块。

您的代码本质上就是这样做的。

document.getElementById(document.getElementById('sign'));

如果只提供字符串给transition() ,那应该很好。

关于你的实际问题

如何在类EcmaScript6中使用addEventListener?

类实际上与函数没有什么不同,它只是存储数据/功能的一种方式。 您可以在类上有一个获取一个DOM的方法,或者在一个DOM上添加一个侦听器,但是您不能将侦听器直接放在类上。 现在,它看起来似乎还没有尝试。 您的类仅存储一些完全有效的逻辑和过程DOM代码。

暂无
暂无

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

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