javascript - 动态创建 li 元素的替代方法
问题描述
使用 JavaScript,我需要动态创建一个列表,如下所示:
<ul id="list">
<li>2015</li>
<li>2016</li>
<li>2017</li>
<li>2018</li>
<li>2019</li>
<li>2020</li>
</ul>
“经典解决方案”(据我所知)是:
for (var i = 2015; i <= 2020; i++) {
var li = document.createElement("li");
li.innerHTML = i;
list.appendChild(li);
}
它完美地工作。
但我想找到替代的,更好的 - 在性能方面 - 解决方案,如果有的话(我想学习更多东西)。
所以我尝试了:
for (var i = 2015; i <= 2020; i++) {
var el = "<li>" + i + "</li>";
list.insertAdjacentHTML('beforeend', el);
console.log(el);
el += el;
}
<ul id="list"></ul>
和
for (var i = 2015; i <= 2020; i++) {
var el = "<li>" + i + "</li>";
list.innerHTML += el;
console.log(el);
}
<ul id="list"></ul>
但在这两种情况下,结果都是:
- 在 DOM 中:
<ul id="list">
<li>2015</li>
<li></li>
<li>2016</li>
<li></li>
<li>2017</li>
<li></li>
<li>2018</li>
<li></li>
<li>2019</li>
<li></li>
<li>2020</li>
<li></li>
</ul>
- 在控制台中:
<li>2015<li>
<li>2016<li>
<li>2017<li>
<li>2018<li>
<li>2019<li>
<li>2020<li>
为什么是那些空节点(<li></li>
)?为什么只在 DOM 中?
解决方案
在您添加"<li>" + i + "<li>"
而不是"<li>" + i + "</li>"
Missing slash
small thing 中,但用户代理已准备好修复丢失的关闭...并且您的代码出现了 doubleli
推荐阅读
- oracle-data-integrator - 如何检查 ODI 存储库中标准序列的最新值
- react-native - 如何获取epubjs库中的文档总页数和当前页面数字索引?
- javascript - 如何递归地将对象键值对添加到具有子数组的对象数组中?
- java - Eclipse - 以编程方式突出显示编辑器的多行
- javascript - 为什么 Javascript 以这种方式工作?
- class - Making a Kotlin Function Accept a String as an Object Reference
- amazon-s3 - 如何在白色背景上显示 S3 对象 url 而不是默认的黑色
- php - php数组合并没有给出预期/期望的结果
- reactjs - 无法使用 React 在 graphql 查询中显示数组中的值
- microsoft-translator - 使用自定义引擎传递错误参数时,Microsoft Translator Text 不会引发错误