div的抓取id,通过模板字面量设置为数字
Grab id of div, which is set as a number through template literal
尝试 document.getElementById()
的 div 时遇到一个小问题,其中 ID 设置为数字。
您可以在下面看到,我正在遍历数据库中的一个对象并显示 DOM 中的每个元素。然后我给每个 div,一个 id,(这是一个数字 lastTask.id
):
function displayLastTask(lastTask) {
console.log(lastTask);
individualTasks +=
`<div class="todoStyle">
<p>Date: ${lastTask.date}: Task: ${lastTask.todo}</p>
<p><button class="deleteButton" id=${lastTask.id}>Delete</button>
</div>`;
tasksContainer.innerHTML = individualTasks;
return tasksContainer;
}
我这样做是因为稍后,我想通过它的 ID/object 数组编号来获取我的删除按钮。 (并且只删除数据库中的一个对象,如果它的 ID 匹配)。
无论如何,我的问题是,如果 document.getElementById()
是一个数字,我该如何做? toString
无效。不确定这是否可能,如果 ID 是一个数字...
这是我正在尝试的:
for (var i = 0, len = res.length; i < len; i++) {
lookup[res[i].id] = res[i];
const id = toString(res[i].id);
document.getElementById(id).addEventListener('click', function(event){
event.preventDefault();
console.log('clicked');
});
}
其中returns出现以下错误:
Uncaught (in promise) TypeError: Cannot read property 'addEventListener' of null
尝试了一些变体,但没有成功。
您不应该为每个项目都添加一个事件侦听器。
你可以通过事件冒泡来做到这一点。
只需将事件侦听器添加到元素的父节点即可。
例如。
document.querySelector('#parent').addEventListener('click', event => {
console.log(event.target.parentNode.id);
})
如果由于某种原因你必须 select 一个父元素而不是该元素的直接父元素,因为你不止一次创建你的项目的父元素,你只需记录以下内容:console.log(event.target.parentNode.parentNode.id);
.
如果再往上一点,就继续添加parentNodes。
只需尝试这些设置,直到找到您要查找的内容。
希望我的解释是可以理解的。
id需要用""包裹起来:
function displayLastTask(lastTask) {
console.log(lastTask);
individualTasks +=
`<div class="todoStyle">
<p>Date: ${lastTask.date}: Task: ${lastTask.todo}</p>
<p><button class="deleteButton" id="${lastTask.id}">Delete</button>
</div>`;
tasksContainer.innerHTML = individualTasks;
return tasksContainer;
}
尝试 document.getElementById()
的 div 时遇到一个小问题,其中 ID 设置为数字。
您可以在下面看到,我正在遍历数据库中的一个对象并显示 DOM 中的每个元素。然后我给每个 div,一个 id,(这是一个数字 lastTask.id
):
function displayLastTask(lastTask) {
console.log(lastTask);
individualTasks +=
`<div class="todoStyle">
<p>Date: ${lastTask.date}: Task: ${lastTask.todo}</p>
<p><button class="deleteButton" id=${lastTask.id}>Delete</button>
</div>`;
tasksContainer.innerHTML = individualTasks;
return tasksContainer;
}
我这样做是因为稍后,我想通过它的 ID/object 数组编号来获取我的删除按钮。 (并且只删除数据库中的一个对象,如果它的 ID 匹配)。
无论如何,我的问题是,如果 document.getElementById()
是一个数字,我该如何做? toString
无效。不确定这是否可能,如果 ID 是一个数字...
这是我正在尝试的:
for (var i = 0, len = res.length; i < len; i++) {
lookup[res[i].id] = res[i];
const id = toString(res[i].id);
document.getElementById(id).addEventListener('click', function(event){
event.preventDefault();
console.log('clicked');
});
}
其中returns出现以下错误:
Uncaught (in promise) TypeError: Cannot read property 'addEventListener' of null
尝试了一些变体,但没有成功。
您不应该为每个项目都添加一个事件侦听器。 你可以通过事件冒泡来做到这一点。
只需将事件侦听器添加到元素的父节点即可。 例如。
document.querySelector('#parent').addEventListener('click', event => {
console.log(event.target.parentNode.id);
})
如果由于某种原因你必须 select 一个父元素而不是该元素的直接父元素,因为你不止一次创建你的项目的父元素,你只需记录以下内容:console.log(event.target.parentNode.parentNode.id);
.
如果再往上一点,就继续添加parentNodes。
只需尝试这些设置,直到找到您要查找的内容。
希望我的解释是可以理解的。
id需要用""包裹起来:
function displayLastTask(lastTask) {
console.log(lastTask);
individualTasks +=
`<div class="todoStyle">
<p>Date: ${lastTask.date}: Task: ${lastTask.todo}</p>
<p><button class="deleteButton" id="${lastTask.id}">Delete</button>
</div>`;
tasksContainer.innerHTML = individualTasks;
return tasksContainer;
}