Я пытаюсь показать данные, считанные из файла JSON, на HTML-страницу с помощью javaScript. Я использую следующий код -
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
<title>JSON Test</title>
</head>
<body>
<div id = "myData"></div>
<script>
fetch('people.json')
.then(function (response) {
return response.json();
})
.then(function (data) {
appendData(data);
})
.catch(function (err) {
console.info('error: ' + err);
});
function appendData(data) {
var mainContainer = document.getElementById("myData");
for (var i = 0; i < data.length; i++) {
var div = document.createElement("div");
div.innerHTML = 'Name: ' + data[i].name + ' ' + data[i].city;
mainContainer.appendChild(div);
}
}
</script>
</body>
</html>
Используя javaScript, я хочу создать несколько тегов div внутри тега div под телом с id = myData. Например - я хочу иметь
<div id = "myData">
<div></div> <!-- This for name from JSON file -->
<div></div> <!-- This for city from JSON file -->
</div>
Я пробовал несколько методов, но ни один из них не работает. Любая помощь??



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы хотите что-то вроде этого?
var div = document.createElement("div");
for (var i = 0; i < data.length; i++) {
div.innerHTML += `
<div class = "wrapper">
<div>Name: ${data[i].name}</div>
<div>City: ${data[i].city}</div>
</div>`;
}
mainContainer.appendChild(div);
Затем вы можете стилизовать класс-оболочку с помощью flexbox в соответствии с вашими предпочтениями.
Вы можете попробовать изменить innerHTML родительского элемента div. Например:
document.querySelector('#myData').innerHTML = `<div>${name}</div> <div>${city}</div>`;Или, если у вас уже есть теги div в вашем элементе myData div, вы можете назначить каждому div идентификатор, а затем отредактировать его оттуда.
document.querySelector('#name').innerText = 'Name';
document.querySelector('#city').innerText = 'City';Другой способ может быть:
div1 = document.createElement('div');
div1.textContent = 'name';
div2 = document.createElement('div');
div2.textContent = 'city';
const myData = document.querySelector('#myData');
myData.append(div1);
myData.append(div2);Создание новых элементов div и добавление могут быть доступны.
<body>
<div id = "myData"></div>
<script>
const data = [{name: 'json', city: 'city'}]
appendData(data);
function appendData(data) {
var mainContainer = document.getElementById("myData");
for (var i = 0; i < data.length; i++) {
var div = document.createElement("div");
let name = document.createElement("div");
let city = document.createElement("div");
name.innerHTML = 'Name: ' + data[i].name ;
city.innerHTML = ' ' + data[i].city;
div.appendChild(name);
div.appendChild(city);
mainContainer.appendChild(div);
}
}
</script>
</body>
Что не работает? Каков результат после выполнения «appendData»?