javascript - 在对象数组中循环,但不打印?
问题描述
我是编码新手,并尝试制作简单的脚本将此 json 打印到 html 表中。
它出什么问题了 ?
下一步将是创建输入字段以添加新数据。
document.getElementById("demo").innerHTML = text;
let bigHero = {characters:[
{name:'Hiro', voice:'Ryan Potter'},
{name:'Baymax', voice:'Scott Adsit'},
{name:'Go Go Tamago', voice:'Jamie Chung'},
{name:'Fred', voice:'T.J. Miller'}
]};
let chars = bigHero['characters'];
for(let i=0, len=chars.length; i<len; i++){
text += "<tr>";
for(let prop in chars[i]){
text += "<td>" + chars[i][name] + "</td>";
text += "<td>" + chars[i][voice] + "</td>";
}
text += "</tr>";
return text;
}
</script>
解决方案
您在每次迭代中不断覆盖变量的值。text
text = "</tr>";
如果这样做,则应确保在每次循环迭代结束时处理变量内容,然后再次覆盖它并撤消所有先前的工作。
下面是一个示例,假设您想bigHero
在“demo”标签中显示变量的内容。
我们清除循环前的内容,并text
在每次循环迭代结束时将变量的内容添加到 DOM 元素中。
或者,您也可以在整个循环之后用变量 content 替换 DOM 元素的内容。
let bigHero = {
characters: [{
name: 'Hiro',
voice: 'Ryan Potter'
},
{
name: 'Baymax',
voice: 'Scott Adsit'
},
{
name: 'Go Go Tamago',
voice: 'Jamie Chung'
},
{
name: 'Fred',
voice: 'T.J. Miller'
}
]
};
let chars = bigHero.characters,
demo = document.getElementById("demo"),
text = "";
// add content to DOM at the end of each iteration, before text variable is 'reset'
demo.innerHTML = "";
for (let i = 0, len = chars.length; i < len; i++) {
text = "<tr>";
text += "<td>" + chars[i].name + " </li>";
text += "<td>" + chars[i].voice + " </li></tr>";
demo.innerHTML += text;
}
// alternative: keep adding to text variable and add content to DOM element after whole loop completed
text = "";
for (let i = 0, len = chars.length; i < len; i++) {
text += "<tr>";
text += "<td>" + chars[i].name + " </li>";
text += "<td>" + chars[i].voice + " </li></tr>";
}
demoTwo.innerHTML = text;
<table id="demo"></p>
</br>
<table id="demoTwo"></p>
推荐阅读
- inno-setup - 从 Inno Script 调用使用 SAFESEH 设置为 no 编译的 C DLL
- php - 使用多个模型的 Laravel 查询构建器的正确类位置
- reactjs - 将打字稿道具传递给样式化的组件会导致“没有重载匹配此调用”问题
- heroku - 如何将我的 Heroku 应用与谷歌域名相关联?
- windows - How can I add a custom background image to the windows title bar?
- swift - Swift:未标记的“中断”只允许在循环或开关内,需要标记的中断才能退出 if 或 do
- material-table - reactjs: material-table: how to do serverside validation when adding or editing
- mxnet - How to reset the mxnet sequential number?
- python - Unable to run Discord bot command in Heroku
- oracle - How to redirect from on url to another url in Oracle Http Server (OHS)