javascript - JavaScript 箭头函数创建 li 对象并添加到 HTML 页面
问题描述
此前端 JavaScript 代码有效,它从字符串数据列表在 ol 标记中创建 li 。我想在一行中完成...
qelements.map(element => { let litag = document.createElement("li");
litag.innerHTML = element;
oltag.appendChild(litag) });
但是这个我收到一个错误:“qlist.html:32 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.”
qelements.map(element => oltag.appendChild(document.createElement("li").innerHTML = element));
取出“.innerHTML = element”,它会按预期在 ol 标记内创建空的 li 元素
解决方案
这个:
document.createElement("li").innerHTML = element
是一个赋值表达式。它的结果值将是等号右侧的任何值(我假设它是一个字符串)。
所以当你这样做时:
qelements.map(element => oltag.appendChild(document.createElement("li").innerHTML = element));
您实际上是在传递element
并appendChild
放弃新创建的li
元素,这不是您想要做的。
如果您想避免在代码的特定部分中包含多行,您可以分解出一个用于创建的函数li
:
function makeLi(content) {
let litag = document.createElement("li");
litag.innerHTML = content;
return litag:
}
然后使用它:
qelements.forEach(element => oltag.appendChild(makeLi(element)));
另请注意,您似乎在滥用该map()
方法。如果您只想遍历一系列值并对每个值做一些事情,请使用.forEach
or for .. of
。
推荐阅读
- elasticsearch - Elasticsearch 动态字段映射和 JSON 点表示法
- awk - 这是什么意思:awk 'OFS="\t" {$1=$1}1' /filepath
- python-3.7 - 如何成功加载此 json 文件?
- laravel - 我为 laravel 使用 firebase 时显示错误消息“Uncaught SyntaxError: Cannot use import statement outside a module”
- json - Powerhsell - 需要解析 IP
- haskell - 为什么是 [ ( True , [ ] ) , ( False , [ ['a'] ] ) ] , "[ (Bool , [ [char] ] )]" 的类型?
- python - 有没有更好的方法来根据已知的项目总数创建最大 url 页码?
- python - 使用 Dash 的 Flask 框架中的 CSRF 保护
- sql - 如何根据输入在索引操作和非索引操作之间切换?
- javascript - 如何使用 jQuery ajax 检查文件是否存在于 JS 数组中?