You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+jQuery开发:如何为Yahoo天气预报每日加载对应天气图标?

解决Yahoo Weather API天气图标匹配问题

嘿,作为同样踩过Yahoo Weather API坑的开发者,给你捋捋怎么搞定这个图标不匹配的问题~

首先得明确:Yahoo的天气图标是基于数字天气代码生成的,不是“多云”“阵雨”这类文本描述。你之前所有图标都一样,大概率是因为只取了单个元素的文本值,没给每个预报项匹配专属的天气代码。

下面是具体的解决步骤:

1. 先在模板里埋好每个预报项的天气代码

Yahoo Weather API返回的每个预报节点里,都有一个code字段(比如28对应多云,30对应晴转多云),这是图标匹配的核心。在Django渲染预报列表时,把这个代码藏到每个预报项的隐藏元素里:

{% for forecast in forecast_list %}
<div class="forecast-item">
  <!-- 隐藏存储当前预报的天气代码 -->
  <span class="weather-code" style="display: none;">{{ forecast.code }}</span>
  <!-- 待填充的天气图标 -->
  <img class="ico" src="" alt="{{ forecast.text }}">
  <!-- 其他预报信息 -->
  <p>{{ forecast.date }}</p>
  <p>{{ forecast.high }}° / {{ forecast.low }}°</p>
</div>
{% endfor %}

2. 用jQuery遍历每个预报项设置图标

修改你的jQuery代码,不要只取单个元素的值,而是遍历所有.ico元素,给每个图标匹配对应的代码:

$(document).ready(function () {
  // 遍历每个预报项的图标元素
  $('.ico').each(function() {
    // 获取当前预报项对应的天气代码(记得去除空格)
    var weatherCode = $(this).siblings('.weather-code').text().trim();
    // 拼接Yahoo官方图标URL
    var iconUrl = 'http://l.yimg.com/a/i/us/we/52/' + weatherCode + '.gif';
    // 给当前图标设置src属性
    $(this).attr('src', iconUrl);
  });
});

为啥之前的代码不行?

你之前只获取了$('#patti').text()这一个元素的内容,相当于所有图标都共用同一个天气代码,自然显示一样的图标。现在改成遍历每个预报项,获取各自的专属代码,就能实现不同天气对应不同图标啦~

另外提醒下:如果你的Django后端还没正确提取API里的code字段,得先在后端处理Yahoo的响应数据,把每个预报的code值取出来传给模板哦。

内容的提问来源于stack exchange,提问作者sachin mathew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:50:02