javascript - 将 .map() 记录到控制台大致显示了我想要的内容,但通过 innerHTML 添加的同一行代码仅显示最后一项
问题描述
在跟踪 Stack Overflow 一段时间后,我终于注册了一个帐户,这是我第一次真正提出问题。
所以我最近开始使用 API 来更好地进行 Web 开发。在构建了一个我喜欢的动漫信息应用程序后,我开始了另一个项目,但对于 NHL 团队和名册使用 API 从这里:https ://gitlab.com/dword4/nhlapi/-/blob/master/stats-api.md
团队信息和徽标部分运作良好,但我正在尝试为每个团队拉名册,这就是我开始崩溃的地方。在我的函数中使用 .map() 会在控制台中产生一些我想要的结果,但是当添加到 .innerHTML 时,相同的代码只会产生最后一个玩家的名字,而不是整个花名册。我添加了 for 循环并尝试链接承诺,但没有运气。
如果有人能指出我正确的方向,将不胜感激。
function getRosterByID(teamID){
fetch(`https://statsapi.web.nhl.com/api/v1/teams/${teamID}/roster`)
.then(res => res.json())
.then(data => {
data.roster.map(players => {
console.log(players.person.fullName);
roster.innerHTML = `
<div>
<dl>
<dt>${players.person.fullName}</dt>
</dl>
</div>`;
}).join();
roster.style.display = 'flex';
});
}
解决方案
当您使用 innerHTML 时,它不会附加。这是一个彻底的替代品。您也不应该将 map() 用作循环,这就是 foreach 的用途。
但是使用地图,你可以得到所有的文字
function getRosterByID(teamID){
fetch(`https://statsapi.web.nhl.com/api/v1/teams/${teamID}/roster`)
.then(res => res.json())
.then(data => {
const htmlOut = data.roster.map(players => {
console.log(players.person.fullName);
return `
<div>
<dl>
<dt>${players.person.fullName}</dt>
</dl>
</div>`;
}).join('');
roster.innerHTML = htmlOut;
roster.style.display = 'flex';
});
}
推荐阅读
- html - 解决 Materialize 下拉菜单的问题
- javascript - 错误:尝试从脚本导入函数时出现“意外的令牌 '{'。导入调用只需要一个参数”
- javascript - 将参数传递给 Express 路由/模块
- javascript - 如何获取角度 js 表达式以考虑来自 api 的 css 值并将其应用于其卡
- scala - 宏尚未扩展 - circe 宏 - 已找到解决方案
- javascript - 尝试使用淘汰赛 javascript 让自动完成工作
- php - cURL 请求不显示任何内容
- r - R - 修复多折线图的图例和其他绘图特征
- mongodb - 在spring数据mongodb中转换MongoDb查询
- c# - Linq 查询:通过子查询与 count() 组进行内部连接