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