首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js天气预报带代码

要在网页上实现一个简单的天气预报功能,可以使用JavaScript结合一个天气API(例如OpenWeatherMap)来获取实时天气数据并展示在前端。以下是一个完整的示例,包括HTML、CSS和JavaScript代码:

1. HTML部分

代码语言:txt
复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>天气预报</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="weather-container">
        <h1>天气预报</h1>
        <input type="text" id="cityInput" placeholder="请输入城市名称">
        <button id="getWeatherBtn">获取天气</button>
        <div id="weatherResult"></div>
    </div>

    <script src="script.js"></script>
</body>
</html>

2. CSS部分(styles.css)

代码语言:txt
复制
body {
    font-family: Arial, sans-serif;
    background-color: #e0f7fa;
    display: flex;
    height: 100vh;
    justify-content: center;
    align-items: center;
}

.weather-container {
    background-color: #ffffff;
    padding: 20px 30px;
    border-radius: 10px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    text-align: center;
}

input[type="text"] {
    padding: 10px;
    margin-right: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
}

button {
    padding: 10px 20px;
    background-color: #007bff;
    color: #fff;
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

button:hover {
    background-color: #0056b3;
}

#weatherResult {
    margin-top: 20px;
}

3. JavaScript部分(script.js)

代码语言:txt
复制
document.getElementById('getWeatherBtn').addEventListener('click', () => {
    const city = document.getElementById('cityInput').value.trim();
    if (city === "") {
        alert("请输入城市名称!");
        return;
    }

    // 替换为你的OpenWeatherMap API密钥
    const apiKey = 'YOUR_API_KEY_HERE';
    const apiUrl = `https://api.openweathermap.org/data/2.5/weather?q=${encodeURIComponent(city)}&appid=${apiKey}&units=metric&lang=zh_cn`;

    fetch(apiUrl)
        .then(response => {
            if (!response.ok) {
                throw new Error("城市未找到或其他网络错误");
            }
            return response.json();
        })
        .then(data => {
            const weatherDescription = data.weather[0].description;
            const temperature = data.main.temp;
            const humidity = data.main.humidity;
            const windSpeed = data.wind.speed;

            document.getElementById('weatherResult').innerHTML = `
                <h2>${data.name} 的天气</h2>
                <p><strong>描述:</strong> ${weatherDescription}</p>
                <p><strong>温度:</strong> ${temperature} °C</p>
                <p><strong>湿度:</strong> ${humidity}%</p>
                <p><strong>风速:</strong> ${windSpeed} m/s</p>
            `;
        })
        .catch(error => {
            document.getElementById('weatherResult').innerHTML = `<p style="color:red;">${error.message}</p>`;
        });
});

4. 使用说明

  1. 获取API密钥
  • 替换API密钥
    • script.js中的YOUR_API_KEY_HERE替换为你获取的API密钥。
  • 运行项目
    • 将上述HTML、CSS和JavaScript代码分别保存为index.htmlstyles.cssscript.js
    • 使用浏览器打开index.html,输入城市名称后点击“获取天气”按钮,即可显示该城市的实时天气信息。

5. 优势与应用场景

  • 实时性:通过API获取最新的天气数据,适用于需要实时更新的应用场景。
  • 用户友好:简单的界面设计和交互,适合各种用户群体。
  • 扩展性强:可以进一步扩展功能,如显示未来几天的天气预报、添加地图定位等。
  • 应用场景
    • 网站或应用的天气插件。
    • 物联网设备的天气监测模块。
    • 移动应用的天气功能集成。

6. 常见问题及解决方法

  • API请求失败
    • 检查API密钥是否正确。
    • 确认城市名称输入无误。
    • 查看网络连接是否正常。
  • 数据未显示
    • 确认JavaScript代码中DOM元素的选择器是否正确。
    • 检查是否有JavaScript错误,可以在浏览器开发者工具中查看控制台日志。
  • 跨域问题
    • 确保API支持CORS(跨域资源共享),或者使用代理服务器来处理跨域请求。

通过以上步骤,你可以实现一个基本的天气预报功能,并根据需要进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【代码艺术】带视觉特效的js密码强度检测开源库

    这是一款带视觉特效的js密码强度检测特效。该特效在用户输入密码的时候,随着密码强度的增强,旁边的图像会越来越清晰或越来越模糊,通过图像的变化来提示用户密码的强度。...由于该js密码强度检测特效的编写使用了CSS变量,所以不是所以浏览器都支持该特效,请使用支持CSS变量的浏览器来查看演示效果。 下面是该js密码强度检测特效的gif动态效果图。 ?...代码解释 css代码: article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display...: js/imagesloaded.pkgd.min.js"> js/zxcvbn.js"> js/demo1.js"> 作者 | 思齐 | 蚂蚁开源社区大神,资深前端工程师

    2.9K21

    初探JavaScript(三)——JS带我碰壁带我飞

    elem.style.top); if(xpos == 200 && ypos == 200){ return false;//书中是return true,但是会出现位置达到200时还会弹出js...addLoadEvent(moveMessage);   其中:addLoadEvent()函数主要用于加载函数,使得这些被加载进来的函数在网页加载后执行(防止因为在JS...延伸:写完这段代码,不禁要想,如果让这段“Don't laugh,I can move,really”文字一直移动会是什么效果,能不能做个反弹,这样就可以想见是一个屏保程序的模型了,先上代码。...xpos > 55){ xpos--; } if(ypos < 55){ ypos++; } if(ypos > 55){ ypos--; }   这是一种没法实现碰壁反弹效果的代码...的时候就会一直在55上下徘徊,在网页中表现就是一直停滞在x:55 y:55的位置,究其原因还是缺少一个控制变量作为一个开关,控制方框在反弹后相应的x或y轴上坐标会增加或减少(不知道我有没有讲清楚,不行的话自己写代码

    1.5K70

    【ace.js】网页版代码智能提示,带高亮编辑器

    背景 纯粹为了在自己博客实现一个代码编辑器,方便在线测试各种代码。 ace介绍 ACE 是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScript应用程序中。...到目前版本,它支持了超过120多种的语法高亮,超过20多种主题等,在编辑器方面也支持多种操作,包括提示等,算是一个基于web端的代码编辑器了。,并能够处理代码多达400万行的大型文档。...ACE开发团队称,ACE在性能和功能上可以媲美本地代码编辑器(如Sublime Text、TextMate和Vim等)。详细API和demo可查阅官网。 步骤 1.编写代码编辑器样式 ?...2.引入ace.js js"> 3.具体示例 <!

    6K10

    带音乐字符画+带颜色字符画—情人节表白代码

    本文目录 带音乐字符画和带颜色字符画效果展示 1.1 带颜色字符画效果展示 1.2 带音乐字符画效果展示 带颜色字符画生成过程 2.1 下载要转换成字符的视频 2.2 把视频中固定间隔的帧取出来做成图片...在正式进入代码讲解之前,先来看下本文的实现效果。 1 带颜色字符画效果展示 视频中的字符可以替换成你想替换的名字缩写,我用的是杨紫的首字母缩写。...二、带颜色字符画生成过程 带颜色字符画的大致生成过程:确定视频——把视频中固定间隔的帧截取出来生成带颜色的字符图片——合并成字符画gif。 若需要从网上下载没有下载按钮的视频,分享大家如下方法。...2 把视频中固定间隔的帧截取出来生成图片 把刚刚下载好的视频存放到电脑某个文件夹中,并让下面代码中的路径和存储路径一致即可。...三、带音乐字符画生成 带音乐字符画生成过程和带颜色字符画生成过程类似,就不赘述了,有疑问的同学可以到公众号中私信我,本文直接把代码展示如下: import os import cv2 import numpy

    1.1K60

    JS代码混淆 | js 逆向系列

    /UglifyJS/ https://github.com/LiPinghai/UglifyJSDocCN/blob/master/README.md 使用方法 npm install uglify-js...-g uglifyjs example.js -c -m --mangle-props -c 代码压缩 -m 代码混淆 --mangle-props 混淆属性名 -b 美化显示 // 原代码 const...JShaman https://www.jshaman.com/ JShaman 是国内公司开发的js代码加密商业产品 免费版可以直接使用 // 原代码 const person = { age...,通过数组、字典等各种形式存储、拼接、替换等,最终进行还原,这里面没有利用到复杂的语法以及js 语言本身的特性,所以我们一点点解开也学不到什么; 这个代码就不一样了,我们一步一步解开它,尝试去学习其中的思路...console.log(c) 这次我们设计三个返回值,分别是函数定义、数值、字符串 看到这,我都蒙了,经过查询资料,我找到了两个维度的复杂的原因 JavaScript 中函数只能有一个返回值,你就说这玩意如果没学过 js

    2.6K10

    调试JS代码

    记录下近期对JS代码的调试过程 性能分析 启动程序之后,打开google浏览器对应页面,按F12或者Ctrl+Shift+I进入 开发者工具页面 目前主要使用的功能有: Performance....性能评估,比如我想看下页面刷新的性能瓶颈所在,先点击 按钮,然后进行页面操作,当页面刷新完成,再点击 按钮,则会生成性能报告,可以看到资源消耗,JS代码的执行逻辑等 Sources....性能报告页面的 部分,可以通过点击色块查看其所在的js代码文件,如 点击则会跳转到 功能栏,有了源文件就可以进行断点调试;这里注意部分js文件是压缩后的文件,建议手动修改程序替换成可读性更强的原始代码文件...查看程序的打印输出,比如我想知道某个函数的执行时间,可以在js代码中进行修改 当js代码执行之后,可以在console输出中看到foo的执行时间 Network....代码使用for循环进行操作,也就是线性复杂度,计算耗时随数据量的增大而线性增大 通过debug观察发现颜色数组会有不少重复的数值,而同样的输入会导致相同的输出,然后对整个数据的1M个点进行统计分析,发现重复率相当高

    19K10

    js代码规范

    前言 在js的代码开发中,我简单的总结出了以下规则,后面会陆续补充并且对规范进行分类。...js代码建议保存到后缀名.js的文件中 js代码不建议放在html中,原因有:不能被缓存,会增大网页文件的大小,可维护性不高,会影响页面的加载。...js吧任何表达式都当一条简单语句,会导致一些隐性的错误。如果自己没加分号,那么js解释器会自动添加分号,按照自己能读懂的断句。 9.2 复合语句 也称为语句块,被包在大括号内部。...比如对象 var obj={} ;var arr=[] eval eval是最容易混乱使用的js函数,他可以执行内部入参的js函数或者表达式,可以直接解析变量。不建议使用 。...尽量使用语法严格模式 消除代码之中的不友好;代码运行更快 ;保证运行的安全 ;为新版本的js做好铺垫。 22.

    8.9K30
    领券