Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击$(';p';)标记时,如何使用toggleClass在华氏温度和摄氏温度之间切换_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript 单击$(';p';)标记时,如何使用toggleClass在华氏温度和摄氏温度之间切换

Javascript 单击$(';p';)标记时,如何使用toggleClass在华氏温度和摄氏温度之间切换,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,为什么toggleClass()不能在$('p')上工作呢?假定$('p')可以在华氏温度到摄氏温度之间切换,然后再切换回华氏温度等等,用户希望切换多少次就切换多少次 链接到代码: 如果看不到链接,请输入我的完整代码: //Our ID key for weather app var appID = "&APPID=f74316dbe7442f12d602b1cae1a5172b"; var city; var state; var fahrenheit = "&units=i

为什么toggleClass()不能在$('p')上工作呢?假定$('p')可以在华氏温度到摄氏温度之间切换,然后再切换回华氏温度等等,用户希望切换多少次就切换多少次

链接到代码:

如果看不到链接,请输入我的完整代码:

//Our ID key for weather app
var appID = "&APPID=f74316dbe7442f12d602b1cae1a5172b";

var city;
var state;
var fahrenheit = "&units=imperial";
var temp;

//using a geo-location API to get city and state info of current user
$.getJSON('http://ip-api.com/json/?callback=?', function(data) {
  city = data.city;
  state = data.regionName;
  getWeather(city, state);
});

//using weather API and outputting results into our HTML
function getWeather(city, state) {
  var api = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + state + "" + fahrenheit + "" + appID;

$.ajax({
url: api,
dataType: 'json',
success: function(data) {
  temp = data.main.temp;
  $('h3').text(city + "," + state);
  $('p').html(temp + '&deg F');

  }
 });
}

$('p').on('click', function(){
    $('p').text(changeTemp(temp));
    $('p').toggleClass(changeTemp(temp));
});

function changeTemp(temp){
   var cel = (temp - 32) * 5/9;
   return cel;
};

在p标记中添加一个类,以决定下次单击时是否应插入摄氏度或华氏度

然后在每次单击时切换该类

因为温度是全局变量,所以不需要将其传递给函数

为添加华氏温度或计算摄氏温度创建不同的函数

$('p').on('click', function(){
  $('p').toggleClass('celcius');
  $('p').toggleClass('fahrenheit');

  if ($(this).hasClass('celcius')) {
    $('p').text(setFahrenheit());
    return;
  }

  $('p').text(setCelcius());
});

function setCelcius(){
  var cel = (temp - 32) * 5/9;
  return cel + "° C";
};

function setFahrenheit(){
  return temp + "° F";
};

或者另一种方法-可能更干净的方法:

  • 在ajax中计算两个temp并将其存储在一个对象中
  • 向p标记添加数据属性以决定下一步显示哪个值
  • 单击-根据数据属性决定要显示的值并切换数据属性

看起来像是来自FreeCodeCamp的天气应用挑战,干得好!