javascript - 如何在天气应用程序中显示 OpenWeatherMap 图标?
问题描述
我正在尝试使用 JavaScript 在我的天气应用程序中显示来自 OpenWeatherMap 的天气图标。
我尝试过使用 jQuery 和我在网上看到的其他解决方案。我还尝试使用“src”属性指定此链接(“http://openweathermap.org/img/w/”),但该链接不起作用,因此图像被破坏。
如何成功地将天气图标添加到我的应用程序中?
这是一些用于制定此问题的最小代码。我希望这有帮助。
HTML:
<div class="weather">
<div id="date"></div>
<div id="cityName"></div>
<img src="" id="icon">
<div id="temp"></div>
<div id="description"></div>
</div>
JavaScript:
var d = new Date();
var n = d.toLocaleDateString();
document.getElementById("date").innerHTML = n;
function getWeather( cityID ) {
var key = '535f8a50b4bc24608c72fcde2aecb52b';
fetch('https://api.openweathermap.org/data/2.5/weather?id=' + cityID+ '&appid=' + key)
.then(function(resp) { return resp.json() })
.then(function(data) {
drawWeather(data);
})
.catch(function() {
// catch any errors
});
}
window.onload = function() {
getWeather( 6167865 );
}
function drawWeather( d ) {
var celcius = Math.round(parseFloat(d.main.temp)-273.15);
var fahrenheit = Math.round(((parseFloat(d.main.temp)-273.15)*1.8)+32);
document.getElementById('cityName').innerHTML = d.name;
document.getElementById('description').innerHTML = d.weather[0].description;
document.getElementById('temp').innerHTML = fahrenheit + '°';
document.getElementById('icon').src = "http://openweathermap.org/img/w/"+obj.weather[0].icon+".png";
}
解决方案
d.weather[0].icon
在图像 src 属性中设置 url 时替换为现有的。
var d = new Date();
var n = d.toLocaleDateString();
document.getElementById("date").innerHTML = n;
function getWeather( cityID ) {
var key = '535f8a50b4bc24608c72fcde2aecb52b';
fetch('https://api.openweathermap.org/data/2.5/weather?id=' + cityID+ '&appid=' + key)
.then(function(resp) { return resp.json() })
.then(function(data) {
drawWeather(data);
})
.catch(function() {
// catch any errors
});
}
window.onload = function() {
getWeather( 6167865 );
}
function drawWeather( d ) {
var celcius = Math.round(parseFloat(d.main.temp)-273.15);
var fahrenheit = Math.round(((parseFloat(d.main.temp)-273.15)*1.8)+32);
document.getElementById('cityName').innerHTML = d.name;
document.getElementById('description').innerHTML = d.weather[0].description;
document.getElementById('temp').innerHTML = fahrenheit + '°';
document.getElementById('icon').src = `http://openweathermap.org/img/w/${d.weather[0].icon}.png`;
}
<div class="weather">
<div id="date"></div>
<div id="cityName"></div>
<img src="" id="icon">
<div id="temp"></div>
<div id="description"></div>
</div>
推荐阅读
- vb6 - 来自卸载表单的 VB6 文本框值重新出现
- sql - 查找列的最大值并在值为零时在同一列中更新它
- python-3.x - 原子替换 SQLite 数据库的内容,最好用 SQL 或 python3
- python - Taking inputs on consecutive lines using list comprehension in python
- functional-programming - F#中带有递归函数的背包问题
- python - PyQt 和 Postgresql:在 PSQL 中工作的简单查询的语法错误
- javascript - JS 提升如何在函数中工作?
- python - 当测试引发未处理的异常(AssertionError 除外)时,使用 pytest 的不同退出代码
- c++ - 如何在 C++ 中同步 FIFO 队列中的工作线程
- c - OpenCL 内核不向主机程序返回字符数据