繁体   English   中英

eventlistener 无法访问函数外的变量

[英]eventlistener can't access variable outside function

提交事件侦听器将读取的元素附加到另一个 div 容器元素。 但是在尝试将读取元素附加到函数外部的另一个事件侦听器时,我无法访问它。 知道如何解决这个问题吗?

function add() {
    read = document.createElement('div');
    read.textContent = 'Read';
    read.classList.add('read');
    card.appendChild(read);
}

submit.addEventListener('click', add);
read.addEventListener("click", () => {
        read.classList.toggle('unread');
    });

您的代码并不正确。 我会建议:

let read = null;
function add() {
   if (read) return;

    read = document.createElement('div');
    read.textContent = 'Read';
    read.classList.add('read');
    card.appendChild(read);

    read.addEventListener("click", () => {
        read.classList.toggle('unread');
    });
}

submit.addEventListener('click', add);

尽管没有关于您要实现的目标的背景信息,但这将很困难。

顺便说一句:不,在函数内部声明的变量是有作用域的,你不能从外部访问它们

读取元素的 eventListener 未激活,因为首先如果您单击提交元素,则读取元素是一个元素。

解决方案:

function add() {
    read = document.createElement('div');
    read.textContent = 'Read';
    read.classList.add('read');
    card.appendChild(read);
    read.addEventListener("click", () => {
        read.classList.toggle('unread');
    });
}

submit.addEventListener('click', add);

暂无
暂无

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

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