【发布时间】:2022-12-09 01:16:06
【问题描述】:
我有一个基于用户输入创建的 json 文件,json 文件中的项目数可能会有所不同。我想在 Javascript 函数中遍历 json 文件中的所有项目,并在 HTML 脚本中逐行显示每个项目。
示例 JSON 文件如下所示:
data={"What is your name": "Jason",
"What is your favorite color": "Blue",
When is your birtyday?", "Jan 15"}
在 HTML 文件中,单击某个按钮后,json 文件中的每个项目都应显示为问题/答案对。例如“What is your name: 应该出现在第一个“问题”输入框,“Jason”应该出现在第一个“答案”输入框。对于上面的例子,因为有三个项目,所以应该有 6输入 html 标签行,其中 3 行用于问题,另外 3 行用于答案。例如,如果 JSON 文件有 5 个项目,则应该有 5 组问题/答案输入。这是我的 HTML 代码:
<input id="open-btn" class="right-button"></input>
<form class="form-container" action="mailto:?subject=Answers" method="post" enctype="text/plain" >
<!-- Question & Answer Input Sets: I want to loop this --!>
<div class="form-group">
<label for="question1">Question </label>
<input type="text" id="question1" class="form-input" name="Question1">
</div>
<div class="form-group">
<label for="answer1">Answer </label>
<input type="text" id="answer1" class="form-input" name="Answer1">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
在 Javascript 中,我读取了 json 文件并尝试遍历所有键(问题)和值(答案)并将它们传递给 HTML 中的问题和答案输入。但是我不确定如何在html组件中引入循环。现在,我只有一个 HTML 格式的问题 (id = question1) 和答案 (id=answer1) 输入,它只显示 json 文件中的第一项。
const open = document.getElementById("open-btn");
open.addEventListener('click', () => {
$.getJSON("../static/data.json", function(data) {
$.each(data, function (key, value) {
document.getElementById("question1").value = key
document.getElementById("answer1").value = value
}
)
console.log("Log Data:",data)
});
如何循环遍历 json 文件中的所有项目并逐行显示在 html 中?例如,如果 json 文件中有三个项目,如上例,我想要 6 行输入,其中 3 行用于问题,另外 3 行用于答案。由于 json 文件的长度可能不同,我无法在我的 HTML 文件中创建预定数量的输入集。
或者是否可以读取 json 文件,并将字典作为变量存储在 Javascript 函数中,并在 html 的 for 循环中使用该变量?
【问题讨论】:
标签: javascript html json