Javascript 如何防止在创建标记时使用onclick?
我有个问题。当我尝试通过document.createElement创建标记时,我尝试添加onclick。当函数处于活动状态时,它将启动此代码中的所有onclickJavascript 如何防止在创建标记时使用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
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你看过下面的答案了吗?