JavaScript -将JSON数组转换为HTML元素[重复]

lkaoscv7  于 2023-05-27  发布在  Java
关注(0)|答案(2)|浏览(196)

此问题已在此处有答案

JavaScript loop through JSON array?(14个回答)
昨天关门了。
我有一个JSON数组的消息,我需要转换成HTML元素,用于显示在我的网页。我收到的JSON看起来像这样:

{
    "data": [
        {
            "fieldData": {
                "Message": "Message 1",
                "Timestamp": "04/14/2023 11:39:13"
            }
        },
        {
            "fieldData": {
                "Message": "Message 2",
                "Timestamp": "04/13/2023 10:02:18"
            }
        },
        {
            "fieldData": {
                "Message": "Message 3",
                "Timestamp": "08/19/2021 19:51:21"
            }
        }
    ]
}

我需要从数组中提取每个“消息”和“时间戳”值,并将它们放置在第一个数组的如下标记中:

<p class="from-them">Message 1</p>
<time class="timestamp-to">04/14/2023 11:39:13</time>

因此,使用上面的示例JSON,最终结果将是:

<p class="from-them">Message 1</p>
<time class="timestamp-to">04/14/2023 11:39:13</time>
<p class="from-them">Message 2</p>
<time class="timestamp-to">04/13/2023 10:02:18</time>
<p class="from-them">Message 3</p>
<time class="timestamp-to">08/19/2021 19:51:21</time>

这是我第一次尝试编写JavaScript函数来将数组转换为单个html元素,并且不确定从哪里开始。

uqjltbpv

uqjltbpv1#

1.将JSON转换为JS可以使用的普通对象,可以使用map()函数,也可以简单地使用JSON.parse()解析JSON
1.然后使用for循环遍历数组中的每个对象
1.使用createElements实际创建该元素:

let json_data = `{
  "data": [
    {
      "fieldData": {
        "Message": "Message 1",
        "Timestamp": "04/14/2023 11:39:13"
      }
    },
    {
      "fieldData": {
        "Message": "Message 2",
        "Timestamp": "04/13/2023 10:02:18"
      }
    },
    {
      "fieldData": {
        "Message": "Message 3",
        "Timestamp": "08/19/2021 19:51:21"
      }
    }
  ]
}`;

// parse JSON
let data = JSON.parse(json_data);

// loop to create the elements
for (let messageIndex = 0; messageIndex < data.data.length; messageIndex++) {
  let message = data.data[messageIndex].fieldData.Message;
  let timestamp = data.data[messageIndex].fieldData.Timestamp;
  
  // create Message
  let messageElement = document.createElement('p');
  messageElement.classList.add('from-them');
  messageElement.textContent = message;
  document.body.appendChild(messageElement);
  
  // create Timestamp
  let timestampElement = document.createElement('time');
  timestampElement.classList.add('timestamp-to');
  timestampElement.textContent = timestamp;
  document.body.appendChild(timestampElement);
}
9jyewag0

9jyewag02#

要创建一个html元素,你需要做如下操作:

var pElement = document.createElement('p'); //use different parameter to make different elements
pElement.className = 'className';
pElement.textContent = 'textContent';
// and essentially you put it in the DOM
document.body.appendChild(pElement);

现在,您只需要创建一个for循环(for“data”),并在每次迭代中创建p元素和time元素,然后将它们附加到DOM。

相关问题