如何 select 跨越一个动态生成的按钮?
How to select span within a dynamically generated button?
问题:
如何仅使用 JavaScript?
更新动态生成的按钮内跨度的 innerHtml
我正在构建一个 'like' 功能(想想社交媒体),用户可以在其中 like/unlike 发帖,但我不知道如何 select 具体值跨越用户点击。我只能使用 .find('span')
找到 jQuery 解决方案
const htmlBtn = `<button class="count"><span>0</span></button>`;
const create = document.getElementById("create");
create.addEventListener("click", (e) => {
const container = document.createElement("div");
container.className = "container";
container.innerHTML = htmlBtn;
document.getElementById("app").append(container);
});
const app = document.getElementById("app");
app.addEventListener("click", (e) => {
const btn = e.target;
/*
each time someone click nth button, span within nth button increments by 1
let count = document.querySelector("span").innerHTML;
count++;
document.querySelector("span").innerHTML = count;
*/
});
<button id="create">Create</button>
<div id="app"></div>
预期结果:
用户单击该按钮仅将该按钮的跨度增加 1。
e.target.children
将为您提供 button
的所有子项的数组,数组的第 0 个索引应该是您的 span
元素,然后您可以使用 innerHTML
方法。
在你的情况下,
let count = parseInt(e.target.children[0].innerHTML);
e.target.children[0].innerHTML = count + 1;
create.addEventListener("click", (e) => {
const container = document.createElement("div");
container.className = "container";
container.innerHTML = htmlBtn;
document.getElementById("app").append(container);
container.addEventListener("click", (e) => {
const value = +e.target.innerHTML;
e.target.innerHTML = (value + 1).toString();
});
});
问题: 如何仅使用 JavaScript?
更新动态生成的按钮内跨度的 innerHtml我正在构建一个 'like' 功能(想想社交媒体),用户可以在其中 like/unlike 发帖,但我不知道如何 select 具体值跨越用户点击。我只能使用 .find('span')
const htmlBtn = `<button class="count"><span>0</span></button>`;
const create = document.getElementById("create");
create.addEventListener("click", (e) => {
const container = document.createElement("div");
container.className = "container";
container.innerHTML = htmlBtn;
document.getElementById("app").append(container);
});
const app = document.getElementById("app");
app.addEventListener("click", (e) => {
const btn = e.target;
/*
each time someone click nth button, span within nth button increments by 1
let count = document.querySelector("span").innerHTML;
count++;
document.querySelector("span").innerHTML = count;
*/
});
<button id="create">Create</button>
<div id="app"></div>
预期结果: 用户单击该按钮仅将该按钮的跨度增加 1。
e.target.children
将为您提供 button
的所有子项的数组,数组的第 0 个索引应该是您的 span
元素,然后您可以使用 innerHTML
方法。
在你的情况下,
let count = parseInt(e.target.children[0].innerHTML);
e.target.children[0].innerHTML = count + 1;
create.addEventListener("click", (e) => {
const container = document.createElement("div");
container.className = "container";
container.innerHTML = htmlBtn;
document.getElementById("app").append(container);
container.addEventListener("click", (e) => {
const value = +e.target.innerHTML;
e.target.innerHTML = (value + 1).toString();
});
});