Javascript 如何防止在创建标记时使用onclick?

Javascript 如何防止在创建标记时使用onclick?,javascript,dom,Javascript,Dom,我有个问题。当我尝试通过document.createElement创建标记时,我尝试添加onclick。当函数处于活动状态时,它将启动此代码中的所有onclick const setLiked = (name) => { console.log(name); }; const deleteLiked = (name) => { console.log(name); }; const getRate = () => { if ('content' in document.c

我有个问题。当我尝试通过document.createElement创建标记时,我尝试添加onclick。当函数处于活动状态时,它将启动此代码中的所有onclick

const setLiked = (name) => {
console.log(name);
};

const deleteLiked = (name) => {
console.log(name);
};

const getRate = () => {
if ('content' in document.createElement('template')) {
    const root = document.querySelector('#root');
    const tempExc = document.querySelector('#getRate');
    const exc = tempExc.content.querySelector('.exchange');

    for (let key in newRate) {
        const p = document.createElement('p');
        p.textContent = newRate[key].Name + ': ';
        const span = document.createElement('span');
        span.textContent = newRate[key].Value;
        p.appendChild(span);
        if (liked.find((el) => el === key)) {
            const like = document.createElement('button');
            like.textContent = ' Избранное';
            like.className = 'liked';
            like.onclick = deleteLiked(key);
            p.appendChild(like);
            exc.prepend(p);
        } else {
            const like = document.createElement('button');
            like.textContent = ' В избранное';
            like.className = 'like';
            like.onclick = setLiked(key);
            p.appendChild(like);
            exc.append(p);
        }
    }

    const clone = document.importNode(tempExc.content, true);
    root.appendChild(clone);
}
};

因此,当getRate函数启动时,使用like.onclick。如何防止它?

当前,您正在立即执行函数,并将函数的返回值设置为
onclick
值。函数不返回任何内容,因此返回的值将是未定义的

like.onclick = undefined;
相反,在试图分配的回调函数周围包装一个函数

like.onclick = () => deleteLiked(key);

创建一个工作片段以展示problem@DCR你看过下面的答案了吗?