【问题标题】:Changing Background Color based on Temperature Ranges根据温度范围更改背景颜色
【发布时间】:2012-05-24 20:57:19
【问题描述】:

我从 Weather Underground 获取一些 API 信息,想知道是否可以使用 API 提供的信息通过 jQuery 更改整个 body 的背景颜色。

我想做的是根据通过 API 返回的特定温度范围在 body 标签上设置一个类。比如:

"current_observation": {
    "image": {
    "url":"http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png",
    "title":"Weather Underground",
    "link":"http://www.wunderground.com"
    },
    "display_location": {
    "full":"Bowling Green, KY",
    "city":"Bowling Green",
    "state":"KY",
    "state_name":"Kentucky",
    "country":"US",
    "country_iso3166":"US",
    "zip":"42101",
    "latitude":"37.02899933",
    "longitude":"-86.46366119",
    "elevation":"154.00000000"
    },
    "observation_location": {
    "full":"Ridgeview Drive, Bowling Green, Kentucky",
    "city":"Ridgeview Drive, Bowling Green",
    "state":"Kentucky",
    "country":"US",
    "country_iso3166":"US",
    "latitude":"36.993744",
    "longitude":"-86.522827",
    "elevation":"714 ft"
    },
    "estimated": {
    },
    "station_id":"KKYBOWLI7",
    "observation_time":"Last Updated on May 24, 2:25 PM CDT",
    "observation_time_rfc822":"Thu, 24 May 2012 14:25:18 -0500",
    "observation_epoch":"1337887518",
    "local_time_rfc822":"Thu, 24 May 2012 14:25:29 -0500",
    "local_epoch":"1337887529",
    "local_tz_short":"CDT",
    "local_tz_long":"America/Chicago",
    "local_tz_offset":"-0500",
    "weather":"Clear",
    "temperature_string":"86.8 F (30.4 C)",
    "temp_f":86.8

这是我正在提取的一些信息。最后一个 temp_f 是我想要关注的。

范围示例 - 80 到 90 应显示 background:#dd7f35

我曾尝试为此设置自定义变量,但总是以失败告终。我似乎无法弄清楚如何使用从 JSON 中提取的信息来设置变量(如果这甚至可能,因为 temp_f 使用小数。)

这是我调用 JSON 的方式

$().ready(function(){ 
    $.getJSON("http://api.wunderground.com/api/[MY API KEY]/conditions/q/autoip.json?callback=?",
    function(data){
        $.each(data, function(i, json) {
        content = '<h1>' + json.icon + '</h1>';
        content += '<img src=' + json.icon_url +'>';
        content += '<p>' + json.temp_f + '<p>';
        $(content).appendTo("#area");
        });
    console.log(data)
    });
});

这是我尝试过的东西

var backDrop = ' + json.temp_f + '

我使用了+ json.temp_f +,因为这对于常规 HTML 来说是很好的,但我可以假设在这种情况下这不起作用?

非常感谢任何帮助。

【问题讨论】:

    标签: jquery json api variables


    【解决方案1】:
     var backDrop = json.temp_f;
    

    去掉引号和优点。

    或者你可以这样做:

     var colorOutput = '';
    
     if(json.temp_f < 20){
         colorOutput = 'blue'; //use hex color
     }else if(json.temp_f >=20 && json.temp_f < 60){
         colorOutput = 'orange'; //use hex color
     }
    
     $('#colorMeElement').css('background',colorOutput);
    

    【讨论】:

      【解决方案2】:

      为每个范围颜色组合设置 CSS 样式,例如具有背景的 .range_80_90:#dd7f35。然后,您可以在脚本中动态创建该类并将其应用于适当的元素。

      【讨论】:

      • 这个,然后像这样将类添加到正文中$(body).addClass('.range_80_90');
      • 好的,谢谢@IsNull 是有道理的,而且比我一直在尝试的方法要简单得多。谢谢吨。
      • @IsNull -- 我一直在尝试这个,但似乎无法让它工作。我设置了所有样式,但无法将类添加到body。能举个例子吗?
      • 一个普通的 jQuery .addClass 应该可以解决问题:$(body).addClass('.range_80_90');
      猜你喜欢
      • 2013-04-30
      • 1970-01-01
      • 2018-07-31
      • 2013-10-24
      • 1970-01-01
      • 2016-06-02
      • 2019-06-20
      • 1970-01-01
      • 2019-06-26
      相关资源
      最近更新 更多