DEV Community

Chris Achinga
Chris Achinga

Posted on • Originally published at chrisdevcode.hashnode.dev on

Creating A Weather Search App in Vanilla JavaScript

This post covers creating a simple weather search application using plain JavaScript, HTML, and CSS.

Demo and Source Code

The project demo is live on codesandbox, and the source code is available on GitHub.

https://codesandbox.io/embed/weather-robot-phase-1-lzt9z9?fontsize=14&hidenavigation=1&theme=dark

Prerequisites

  1. Openweathermap API Keys
  2. JavaScript Fetch API and DOM Manipulation
  3. Basic HTML and CSS

Creating the HTML and CSS Files

Create a new file (index.html) and add the following:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Weather Robot</title>
    <link rel="stylesheet" href="./weatherRobot.css" />
  </head>
  <body>
    <section class="section-head">
      <div class="container">
        <h1 class="heading">Weather Robot</h1>
        <form>
          <input type="text" placeholder="Search for a city" autofocus />
          <button type="submit">GET WEATHER</button>
          <span class="msg"></span>
        </form>
      </div>
    </section>
    <section class="city-array">
      <div class="container">
        <ul class="cities"></ul>
      </div>
    </section>
    <script src="./weatherRobot.js"></script>
  </body>
</html>

Enter fullscreen mode Exit fullscreen mode

Create separate files for the styles and JavaScript. Inside the CSS file, add the following:

https://gist.github.com/achingachris/fffc4c92672843c1d5688f5c2004f9a1

Open the file on your browser to view the web page

image.png

Now let's add some functionality to search and get weather information!

Getting OpenWeatherMap API Keys:

After signing in to your account, navigate to https://home.openweathermap.org/api\_keys to get your API Keys:

image.png

Inside the js file, add the following at the top:

const form = document.querySelector('.section-head form'),
  input = document.querySelector('.section-head input'),
  msg = document.querySelector('.section-head .msg'),
  list = document.querySelector('.city-array .cities'),
  apiKey = 'API_KEY'

Enter fullscreen mode Exit fullscreen mode

Replace the API_KEY with your API Key from OpenWeatherMap.

In the snippets above, we grab the input to capture the city name entered by a user, document.querySelector('.section-head input'), and return the results in a list list = document.querySelector('.city-array .cities'),

We then create an event listener to listen for user inputs and query the API to get the weather of the entered city:

form.addEventListener('submit', (e) => {

}

Enter fullscreen mode Exit fullscreen mode

Copy the following code inside the event listener function:

https://gist.github.com/achingachris/935d15948a95aac09150cd7dc7e99469

Run the file to view the changes. For every valid city searched, it's added on the card list:

image.png

Top comments (0)