通过一个完整的项目实例来演示如何使用JavaScript实现某个功能或解决某个问题 | 青训营

99 阅读2分钟

想了想一开始还真不知道写什么项目来使用JavaScript实现某个功能或解决某个问题,但由于今天天气太热,既然与天气有关,那今天就写一个关于获取天气情况的程序吧. 使用JavaScript构建简单的天气应用程序。这个应用程序将调用一个外部API来获取天气数据,并将这些信息显示在网页上。将使用到的技术包括:HTML,CSS,JavaScript,以及Fetch API进行网络请求。

运行时,需要替换代码中的"your_api_key"为你自己的OpenWeatherMap API密钥。

1.创建一个包含输入框、按钮和用于显示天气信息的div的表单

```<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>JavaScript 天气应用</title>
</head>
<body>
  <h1>JavaScript 天气应用</h1>
  <form id="weather-form">
    <label for="city">城市:</label>
    <input type="text" id="city" placeholder="输入城市名...">
    <button type="submit">查询</button>
  </form>
  <div id="weather-info"></div>
</body>
</html>

首先在HTML中创建了一个表单,用户可以在其中输入城市名称。监听表单的"submit"事件,当用户提交表单后,阻止表单的默认提交行为,然后使用用户输入的城市名称构建一个URL,用于请求天气数据。

2.设置了一些基本的样式,如字体和间距。

```body {
  font-family: Arial, sans-serif;
}

form {
  margin-bottom: 20px;
}

#weather-info {
  margin-top: 20px;
}

3.JavaScript部分:
- 监听表单的提交事件,当用户提交表单时执行相应的代码。
- 阻止表单的默认提交行为,以便使用自定义的代码处理表单提交。
- 获取用户输入的城市名称。
- 构建用于请求天气数据的URL,将用户输入的城市名称和API密钥添加到URL中。
- 使用Fetch API发送HTTP GET请求,并处理返回的Promise。
- 检查响应的状态码,如果不是200,则抛出一个错误。
- 如果请求成功,将响应体解析为JSON格式。
- 将天气数据插入到HTML字符串中,并将该字符串设置为指定元素的HTML内容。
- 如果请求或解析过程中出现错误,捕获错误并在控制台输出错误信息

```// 监听表单的提交事件
document.getElementById('weather-form').addEventListener('submit', event => {
  event.preventDefault(); // 阻止默认的表单提交行为

  // 获取用户输入的城市名称
  const city = document.getElementById('city').value;

  // 构建用于请求天气数据的URL
  const url = `http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=your_api_key`;

  // 使用Fetch API发送HTTP GET请求
  fetch(url)
    .then(response => {
      if (!response.ok) { // 如果响应的状态码不是200,抛出一个错误
        throw new Error(`Status Code: ${response.status}`);
      }
      return response.json(); // 解析响应为JSON格式
    })
    .then(data => {
      const weatherDiv = document.getElementById('weather-info');
      // 将天气数据插入到HTML字符串中,并设置为weather-info元素的HTML内容
      weatherDiv.innerHTML = `
        <h2>${data.name}</h2>
        <p>${data.weather[0].description}</p>
        <p>温度: ${data.main.temp - 273.15}°C</p>
      `;
    })
    .catch(error => console.log('There was an error:', error)); // 捕获请求或解析错误,并在控制台输出错误信息
}, false);

使用Fetch API请求这个URL,然后处理返回的Promise。如果响应的状态码不是200,抛出一个错误。否则,将响应体解析为JSON。
解析为JSON的响应体包含需要的天气数据,将这些数据插入到一个HTML字符串中,然后将这个字符串设置为#weather-info元素的HTML内容。

over!!!