-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
54 lines (47 loc) · 2.35 KB
/
index.js
File metadata and controls
54 lines (47 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const container = document.querySelector('.container');
const search = document.querySelector('.search-box button');
const weatherBox = document.querySelector('.weather-box');
const weatherDetails = document.querySelector('.weather-details');
search.addEventListener('click', async () => {
const APIKey = '2675a0482e5c8100dce84fc9f2ecfe88';
const city = document.querySelector('.search-box input').value;
if (city === '') return;
try {
const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${APIKey}`);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const json = await response.json();
const image = document.querySelector('.weather-box img');
const temperature = document.querySelector('.weather-box .temperature');
const description = document.querySelector('.weather-box .description');
const humidity = document.querySelector('.weather-details .humidity span');
const wind = document.querySelector('.weather-details .wind span');
const weatherImages = {
Clear: 'images/clear.png',
Rain: 'images/rain.png',
Clouds: 'images/cloud.png',
Snow: 'images/snow.png',
Mist: 'images/mist.png',
Haze: 'images/mist.png'
};
if (json.weather && json.weather[0]) {
const weatherMain = json.weather[0].main;
image.src = weatherImages[weatherMain] || 'images/cloud.png'; // Fallback image if condition not matched
temperature.innerHTML = `${parseInt(json.main.temp)}<span>°C</span>`;
description.innerHTML = `${json.weather[0].description}`;
humidity.innerHTML = `${json.main.humidity}%`;
wind.innerHTML = `${parseInt(json.wind.speed)}km/h`;
} else {
// Handle cases where weather information is not available
temperature.innerHTML = '';
description.innerHTML = 'No weather information available';
humidity.innerHTML = '';
wind.innerHTML = '';
image.src = 'images/404.png';
}
} catch (error) {
console.error('There has been a problem with your fetch operation:', error);
// Handle errors gracefully here, maybe show an error message to the user
}
});