如何在javascript中从多个类中获取clicked元素

如何在javascript中从多个类中获取clicked元素,javascript,Javascript,每次点击网站上的“添加”按钮时,我都会借助以下代码污染一个div const addClick = document.getElementById("addBtn"); addClick.addEventListener("click", () => { addNote(); }); function addNote(){ const notes = document.getElementById("notes"

每次点击网站上的“添加”按钮时,我都会借助以下代码污染一个div

const addClick = document.getElementById("addBtn");
addClick.addEventListener("click", () => {
    addNote();
});

function addNote(){
    const notes = document.getElementById("notes");
    notes.innerHTML += `
    <div class="note">
    <div class="delete"><i class="fas fa-times"></i></div>
    <button class="save"><i class="fas fa-check"></i></button>
    <textarea type="text" class="text"></textarea>
    </div>
    `;
 }
const addClick=document.getElementById(“addBtn”);
addClick.addEventListener(“单击”,()=>{
addNote();
});
函数addNote(){
const notes=document.getElementById(“notes”);
notes.innerHTML+=`
`;
}
使用这段代码,我将生成具有删除或保存选项的便笺。我想知道单击了哪个类元素。我想用香草Javascript来实现这一点


您可以使用事件委派:

将事件侦听器添加到父元素或文档中,然后检查单击的元素是否包含要针对的类

您可能还需要检查单击的元素是否是按钮(图标)的子元素

document.addEventListener(“单击”),函数(事件){
var target=event.target;
if(isElement(目标为“删除”)){
log(“单击删除按钮”,target.closest(“.note”);
}else if(isElement(目标,“保存”)){
log(“单击保存按钮”,target.closest(“.note”);
}
});
函数isElement(元素,类名){
return element.classList.contains(className)| element.closest(`.${className}`);
}

删除
拯救
删除
拯救
删除
拯救

您可以使用事件委派:

将事件侦听器添加到父元素或文档中,然后检查单击的元素是否包含要针对的类

您可能还需要检查单击的元素是否是按钮(图标)的子元素

document.addEventListener(“单击”),函数(事件){
var target=event.target;
if(isElement(目标为“删除”)){
log(“单击删除按钮”,target.closest(“.note”);
}else if(isElement(目标,“保存”)){
log(“单击保存按钮”,target.closest(“.note”);
}
});
函数isElement(元素,类名){
return element.classList.contains(className)| element.closest(`.${className}`);
}

删除
拯救
删除
拯救
删除
拯救

以下是您案例的一个片段

HTML


以下是您案例的一个片段

HTML


您可以使用
event.target
来区分单击的注释在父元素上添加一个事件侦听器,并使用事件传播来捕获单击的子元素,就像这样
note.addEventListener('click',(e)=>{const clickedEl=e.target}
注释中有什么值?@BlackMathI used onclick=function(事件)但是,当我实现它时,由于某种原因它不起作用。innerHtml@ZeeshanAhmed我的意思是
notes.addEventListener(…)
您可以使用
event.target
来区分单击了哪个注释在父元素上添加一个事件侦听器,并利用事件传播来捕获单击的子元素,就像这样
note.addEventListener('click',(e)=>{const clickedEl=e.target}
注释中的值是什么?@BlackMathI used onclick=function(event)但是,当我实现它时,由于某种原因它不起作用。innerHtml@ZeeshanAhmed我的意思是
notes.addEventListener(…)
Hey,谢谢。我最终使用event.target实现了这一点。我还使用firebase for db。非常感谢。我必须为生成的每个新便笺提供唯一的Id,在event.target的帮助下,我能够捕获特定Id并完成这项工作。非常感谢您的帮助。Hey,谢谢您。我实现了这一点最后使用event.target。我也在使用firebase for db。非常感谢。我必须为生成的每个新便笺提供唯一的Id,并且在event.target的帮助下,我能够捕获特定的Id并完成工作。非常感谢您的帮助。嘿,感谢您提供此解决方案。我无法按照我的要求准确地实现此功能,但正如您告诉我的那样在评论中提到,一旦我给了e.target唯一的ID,我就可以借助于e.target来实现。非常感谢您的时间,我真的很感激。嘿,谢谢您的解决方案,我无法按照我的要求准确地实现这一点,但正如您在评论中提到的,一旦我给了他们,我就可以借助e.target来实现独特的ID。非常感谢您的时间。非常感谢。
<div id="app"></div>
const appDiv = document.getElementById("app");
appDiv.innerHTML = `<h1>JS Starter</h1>`;

[1, 2, 3, 4].forEach((el, index) => {
  const note = document.createElement("div");
  appDiv.insertAdjacentElement("afterend", note);
  note.classList.add("note");
  note.addEventListener("click", () => {
    appDiv.innerHTML = `<h1>Box number: ${index + 1}<h1>`;
  });
});
.note {
  border: 1px solid black;
  height: 100px;
  width: 100px;
  margin: 10px;
}

.note:hover {
  cursor: pointer;
}