微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript-动态创建li元素的替代方法

如何解决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>

AND

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>"
缺少slash小东西,但是用户代理准备修复丢失的结束...,并且您的代码以两倍的li

出现

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。