javascript - 在哪里以及如何添加计数器并使用它来增加附加列表项的内部文本 - DOM
问题描述
使用 DOM - 单击该按钮会将项目附加到列表中,但它还需要增加每个附加列表项的 innerText 整数 [i]。我不知道如何使它增加。
我尝试在函数 insertItem() 和 button.addEventListener 中添加一个计数器,但没有成功。计数器示例:
let clickCount = 0;
clickCount++:
HTML
<body>
<button class='button'>Click to add new list item</button>
</body>
JavaScript
let button = document.querySelector('button');
document.body.appendChild(button);
button.className = 'button';
button.addEventListener('click', insertItem);
function insertItem() {
let list = document.createElement('ul');
document.body.appendChild(list);
for (let i = 1; i === 1; i++) {
let item = document.createElement('li');
let text = document.createTextNode('This is list item ' + [i]);
item.appendChild(text);
list.appendChild(item);
document.getElementsByName('item').innerHTML = 'This is list item ' + [i+1];
}
}
我希望 innerText ('This is list item ' + [i]) 在每次单击按钮时增加 1。
截至目前,我的代码功能但 [i] 没有增加;每次点击/追加时,它都保持为“1”。
解决方案
你有几个问题:
您的按钮已经是 HTML 的一部分 - 无需在开始时再次附加它。
您使用 for 循环,但它不会循环,而是只运行一次代码(因此,不需要它)
您正在创建多个无序列表(
ul
标签),而您可以在函数之外创建一个,并将项目(li
标签)添加到该ul
标签中。
解决这些问题后,您可以创建一个名为的全局变量clickCounter
并将其用作每个项目末尾的数字。每次将项目添加到列表时,您都可以clickCounter
使用clickCounter++
. 我已将clickCounter
其设为全局,就好像它在您的函数中一样,每次单击您的按钮时它都会重置,这不是您想要的。
请参阅下面的工作示例:
let button = document.querySelector('button.button'); // get the button element with the button class
button.addEventListener('click', insertItem);
let clickCounter = 1;
let list = document.createElement('ul');
document.body.appendChild(list);
function insertItem() {
let item = document.createElement('li');
let text = document.createTextNode('This is list item ' + clickCounter);
item.appendChild(text);
list.appendChild(item);
clickCounter++;
}
<button class='button'>Click to add new list item</button>
推荐阅读
- python - Python Keras ValueError:数据基数不明确
- integromat - Webhook - 验证 - 验证是否允许 POST 请求的 OPTIONS 方法 - Integromat SDK
- c++ - 为什么你会为你将通过 std::vector 引用的对象使用堆分配?
- python - 是否可以在子类中将数据属性分配给超类?
- php - 从 Web 服务器电子邮件发送嵌入的 pdf
- php - 警告:array_combine():两个参数在
- ruby-on-rails - has_one 连接不支持包含
- matlab - 在 MatLab 的 fminsearch 中使用向量作为输入
- json - 在绑定之前显式处理压缩的 json
- node.js - Dockerfile 异常 module_not_found 使用 node 和 express