DEV Community

Cover image for How to Make a Weather App using JavaScript
Shantanu Jana
Shantanu Jana

Posted on

How to Make a Weather App using JavaScript

In this article you will learn how to create weather app using JavaScript. This JavaScript Weather app will help you to know about the weather of any location. If you input the name of any city in the input box here, in the box below you can find out all its information like temperature, wind speed and sky conditions.

Watch its live demo to learn how it works. I took the help of API Link to create this project. With this link all the information will be collected from other places with the help of "fetch" method. First we created its basic structure using HTML and CSS. Then I implemented it using JavaScript.

You need to have a basic idea about HTML CSS JavaScript to create this weather application. Here I have shared step-by-step tutorial and a video.

There are two boxes here. In the first box there is a place to input the name of the city and submit button. The result can be seen in the second box.

The first box contains an input box for input and a submit button. If you input the name of the city in that box and click on the submit button, you will see all the information in the box below.

HTML code of Simple weather app

Below are the HTML codes needed to create this design. Here I have broken the code step-by-step. If you want the code with one, you can download source code.
Basic structure
I have created a basic structure using the following codes. Basic structure is an area with two boxes.

<div class="container-fluid">
   <section class="main">

   </section>
</div>
Enter fullscreen mode Exit fullscreen mode

First box
Now I have added the HTML code needed to create the first box. Two input functions have been used here. The first input is to input the name of the city and the second is to make a button.

<section class="inputs">

   <input type="text" placeholder="Enter any city..." id="cityinput">
   <input type="submit" value="Submit" id="add">

   <button placeholder="submit" id="add"></button>

</section>
Enter fullscreen mode Exit fullscreen mode

Second box or Display
Now arrangements have been made to make the second box i.e. display. Where weather related information can be found. The h2 tag is used here and the three paragraph tags are used.

The name of your input city can be found in h2. The other three paragraphs include sky conditions, temperature and wind speed.

<section class="display">
  <div class="wrapper">
      <h2 id="cityoutput"></h2>
      <p id="description"></p>
      <p id="temp"></p>
      <p id="wind"></p>
  </div>
</section>
Enter fullscreen mode Exit fullscreen mode

CSS code of JavaScript weather app

Above I have added the necessary HTML code to create the Simple Weather application. Now it needs to be designed using CSS code. I designed the basics using the following CSS codes.

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
body{
    background: #448aff;
}

.container-fluid{
 width: 410px;
 margin: 50px auto;
 padding: 10px;
}
Enter fullscreen mode Exit fullscreen mode

Now the first box has been designed. I have used white as the background color of the box and padding: 2rem 0 2rem 0 has been used to create some space around it.

.inputs {
    padding: 2rem 0 2rem 0;
    text-align: center;
    justify-content: center;
    background: white;
}
Enter fullscreen mode Exit fullscreen mode

building a weather app using javascript

The place to input the name of the city is designed by the following code. Here box height: 3.5rem, width: 20rem and color transparent are used.

.inputs input[type="text"] {
    height: 3.5rem;
    width: 20rem;
    background: #212121;
    font-weight: bold;
    font-size: 1.1rem;
    padding: 10px;
    border: none;
    background-color: transparent;
    border: 2px solid #c2c2c2;
    border-radius: 2px;
    margin-right:4px ;
}
Enter fullscreen mode Exit fullscreen mode

weather app using javascript

I have designed the submit button using the following CSS codes. I used button height: 3.2rem, width: 6.5rem and background color blue.

.inputs input[type="submit"] {
    height: 3.2rem;
    width: 6.5rem;
    background: #0a67ca;
    font-weight: bold;
    color: white;
    font-size: 1.2rem;
    margin-top: 20px;
    border: none;
    border-radius: 2px;
}
Enter fullscreen mode Exit fullscreen mode

weather app using html css and javascript
Now I have added the CSS code required for making the second box i.e. display. This display uses width: 400px and height: 45vh.

.display {
    text-align: center;
    width: 400px;
    color: #16a864;
}
.wrapper {
    margin: 0 9rem;
    background-color: white;
    height: 45vh;
    margin: 50px auto;
    border-radius: 2px;
}
Enter fullscreen mode Exit fullscreen mode

weather forecast app using javascript

Now the following codes have helped to design all the text information in this box. Although this information is no longer available for viewing.

This can be seen after using JavaScript. But now I have managed to design it with the necessary CSS code.

.wrapper h2{
    padding: 5px 0;
    text-align: center;
    background: #0548b5;
    color: white;
    font-family: sans-serif;
  }
  .wrapper p{
    margin:20px 50px;
    margin-right: 20px;
    text-align: left;
    color: #04214c;
    font-size:23px;
  }

  .wrapper h2 span{
    font-size: 26px;
    color: #9beefb;
  }
    .wrapper p span{
    color: #90006e;
    font-size: 25px;
  }
Enter fullscreen mode Exit fullscreen mode

weather app using html css and javascript github

JavaScript code of the basic weather app

I have designed this basic weather app using HTML and CSS code above. Now is the time to implement it with JavaScript.

Below I have given all the JavaScript and all the information below each code. I hope the following explanations will help you understand. If there is any problem, you can take the help of video tutorial below.

//Now we need to determine the constant of one of the id functions. Because no html function can be used directly in JavaScript.
var inputval = document.querySelector('#cityinput')
var btn = document.querySelector('#add');
var city = document.querySelector('#cityoutput')
var descrip = document.querySelector('#description')
var temp = document.querySelector('#temp')
var wind = document.querySelector('#wind')


apik = "3045dd712ffe6e702e3245525ac7fa38"

//kelvin to celcious. 1 Kelvin is equal to -272.15 Celsius.

function convertion(val){
    return (val - 273).toFixed(2)
}
//Now we have to collect all the information with the help of fetch method

    btn.addEventListener('click', function(){

//This is the api link from where all the information will be collected

        fetch('https://api.openweathermap.org/data/2.5/weather?q='+inputval.value+'&appid='+apik)
        .then(res => res.json())

         //.then(data => console.log(data))

        .then(data => {

//Now you need to collect the necessary information with the API link. Now I will collect that information and store it in different constants.

            var nameval = data['name']
            var descrip = data['weather']['0']['description']
            var tempature = data['main']['temp']
            var wndspd = data['wind']['speed']
//Now with the help of innerHTML you have to make arrangements to display all the information in the webpage.
            city.innerHTML=`Weather of <span>${nameval}<span>`
            temp.innerHTML = `Temperature: <span>${ convertion(tempature)} C</span>`
            description.innerHTML = `Sky Conditions: <span>${descrip}<span>`
            wind.innerHTML = `Wind Speed: <span>${wndspd} km/h<span>`

        })

//Now the condition must be added that what if you do not input anything in the input box.
        .catch(err => alert('You entered Wrong city name'))
    })
//If you click on the submit button without inputting anything in the input box or typing the wrong city name then the above text can be seen.
Enter fullscreen mode Exit fullscreen mode

build a weather app using javascript
Hopefully the tutorial and video above helped you to know how I created this JavaScript Weather application. If you have anything to say, be sure to let me know in the comments.

If you have learned something from this tutorial, please like the article. You can download the source code needed to create the Simple Weather app.

You can visit my blog for more tutorials like this. 😊
https://www.foolishdeveloper.com/

Discussion (11)

Collapse
orsifrancesco profile image
Francesco Orsi

I really like this project :) but I would never share my API KEY..

one of the simplest way to avoid it.. should be creating a server side page (nodejs.. PHP..) with a CURL to openweather.org + API blocking all the requests other than your domain

Collapse
shantanu_jana profile image
Shantanu Jana Author

Yes you are right. From now on I will try not to provide API KEY.
Thanks for liking the project 😍

Collapse
imagineeeinc profile image
Imagineee

can I ask why you are revealing your api key for open weather, on the internet publicly, people can use it and even exploit it, and if you are using the free plan you get 1,000,000 api calls a month, so you can run out of the number of calls quickly if people can accses it for free.

Collapse
shantanu_jana profile image
Shantanu Jana Author

Thanks for letting me know. But if I don't share how others will use this project.

I don't think there is any reason to worry because I am using premium plane for this. 😊

Collapse
imagineeeinc profile image
Imagineee

oh, I didn't know, but still I feel like its a bad practise overall, though you are helping beginners, you can teach them instead how to obtain a api key

Collapse
cheribc profile image
Heather B Cooper

Thank you for the step by step instructions and examples. It's very helpful to me as a beginner to organize my thoughts.

Collapse
shantanu_jana profile image
Shantanu Jana Author

welcome

Collapse
spandyboss profile image
SpandyBoss

Wow it's design is so fluent I will also try to make it .
And the comment by @imagineeeinc is also correct .
Keep it up
Good luck bro

Collapse
shantanu_jana profile image
Shantanu Jana Author

Thank you

Collapse
pritishraj04 profile image
Pritish Raj • Edited on

Correct me if i am wrong. Wouldn't the description.innerHTML part in JavaScript code throw an error? Since "description" is not defined rather descrip is the var name used in the top.

Collapse
fz_vega profile image
Fernando • Edited on

I like this project. I will try use async/await + try/catch with fetch.