获取div的id,通过模板字面量设置为数字
2019-07-18
125
尝试
document.getElementById()
时遇到一个小问题,其中 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/对象数组编号获取删除按钮。(并且仅删除数据库中 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');
});
}
返回以下错误:
Uncaught (in promise) TypeError: Cannot read property 'addEventListener' of null
尝试了几种变化,但没有成功。
2个回答
您不应该为每个项目添加事件侦听器。 您可以使用事件冒泡来实现这一点。
只需向您的元素的父节点添加事件侦听器即可。 例如
document.querySelector('#parent').addEventListener('click', event => {
console.log(event.target.parentNode.id);
})
如果出于某种原因您必须选择该元素的父元素而不是直接父元素,因为您不止一次创建项目的父元素,则只需记录以下内容:
console.log(event.target.parentNode.parentNode.id);
。
如果它甚至更高,您只需继续添加父节点。
只需尝试这些设置,直到找到您要查找的内容。
希望我的解释可以理解。
Keimeno
2019-07-18
您需要用“”包裹 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;
}
Constantin Trepadus
2019-07-18