首先到 OpenWeatherMap 註冊並獲取一個 API 金鑰。這個金鑰將用於發送 API 請求。
應用程序將包括以下功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>天氣應用</title>
</head>
<body>
<h1>天氣查詢</h1>
<input type="text" id="cityInput" placeholder="請輸入城市名稱">
<button id="searchBtn">查詢天氣</button>
<div id="weatherInfo"></div>
<script src="app.js"></script>
</body>
</html>
// 你的 API 金鑰
const apiKey = 'YOUR_API_KEY'; // 請替換為你自己的 API 金鑰
// 取得 DOM 元素
const searchBtn = document.getElementById('searchBtn');
const cityInput = document.getElementById('cityInput');
const weatherInfo = document.getElementById('weatherInfo');
// 當使用者點擊「查詢」按鈕時
searchBtn.addEventListener('click', async () => {
const city = cityInput.value.trim();
if (!city) {
weatherInfo.innerHTML = '請輸入城市名稱';
return;
}
// 清空之前的結果
weatherInfo.innerHTML = '';
try {
const weatherData = await getWeatherData(city);
displayWeatherInfo(weatherData);
} catch (error) {
weatherInfo.innerHTML = `錯誤:${error.message}`;
}
});
// 發送 API 請求,取得天氣數據
async function getWeatherData(city) {
const apiUrl = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric&lang=zh_tw`;
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error('無法獲取天氣數據,請檢查城市名稱');
}
const data = await response.json();
return data;
}
// 顯示天氣信息
function displayWeatherInfo(data) {
const cityName = data.name;
const temp = data.main.temp;
const description = data.weather[0].description;
weatherInfo.innerHTML = `
<h2>${cityName}</h2>
<p>溫度:${temp}°C</p>
<p>天氣狀況:${description}</p>
`;
}
fetch
發送 HTTP GET 請求來獲取城市的天氣信息,並使用 async/await
處理非同步數據。try/catch
來捕捉錯誤並顯示友好的錯誤訊息。輸入「Taipei」後點擊查詢,會顯示以下的結果:
台北市
溫度:28°C
天氣狀況:多雲