Я использовал чистую функцию для создания оболочки для нескольких элементов HTML и не понимаю, как вставить в нее данные API ответа JSON.
Можете ли вы помочь создать еще одну чистую функцию, которая вставляет данные API в HTML, любит текст или использует существующую функцию с именем «create», которая имеет свойство «innerText».
Я нашел похожий вопрос: Использование цикла Javascript для создания нескольких элементов HTML
const create = (what, classAndId, text) => {
let element = document.createElement(what);
element.className = classAndId.class;
element.id = classAndId.id;
element.innerText = text;
return element;
};
API:
const link = `http://api.apixu.com/v1/current.json?key=${key}&q=Kiev`;
const request = async () => {
try {
const response = await fetch(link);
return await response.json();
}catch (e) {
throw new Error(e);
}
};
Функция преобразования данных API в читаемый формат:
const parser = param => {
return {
name: param.location.name,
region: param.location.country,
time: param.location.localtime,
temperature: {
real: param.current.temp_c,
feels_like: param.current.feelslike_c,
},
wind: {
speed: param.current.wind_kph,
direction: param.current.wind_dir,
},
pressure: param.current.pressure_mb,
visibility: param.current.vis_km,
precipitation: param.current.precip_mm,
humidity: param.current.humidity,
};
};
Асинхронная функция, которая просто преобразовывает данные API в HTML после преобразования:
async function showData() {
const main = document.querySelector("#main");
document.body.appendChild(main);
main.innerHTML = JSON.stringify(parser(await request()));
}
Ожидается после рендера:
Ожидается в HTML:
<div class="item">11:30 PM</div>
<div class="item">Mostly Cloud</div>
<div class="item">Thu Jun 13</div>
Это делает функцию рендеринга:
{"name":"Kiev","region":"Ukraine","time":"2019-04-18 1:38","temperature":{"real":6,"feels_like":4.6},"wind":{"speed":6.8,"direction":"ENE"},"pressure":1028,"visibility":10,"precipitation":0,"humidity":70}