2017-08-10 14 views
0

私の最近のプロジェクトの1つは、気温を華氏から摂氏に変換することです。しかし、私は私のボタンをクリックすると私に未定義の値を与える問題に遭遇しました。 APIから要求した温度値を参照する必要がありますか?私は私の天気機能内の私の変換は、私がそれを呼び出すときに実行されていないと信じています。 私のcodepenはここにあります。メトリックの変換時に未定義値

https://codepen.io/baquino1994/pen/qXjXOM?editors=0010

HTML

<span id="temp"></span> 
<button id="tempunit">F</button> 

JS

function weather(){ 
    function success(position){ 
     var latitude = position.coords.latitude; 
    var longitude= position.coords.longitude; 
     // location.innerHTML = "Latitude:" + latitude+"°"+ "Longitude: " + longitude+'°'; 
     var theUrl = url +apiKey + "/"+ latitude+","+ longitude +"?callback=?"; 

    $.getJSON(theUrl, function(data){ 
     $("#temp").html(data.currently.temperature) 
     $("#minutely").html(data.minutely.summary) 
     // currentTempInFahrenheit = Math.round(data.html.currently.temperature * 10)/
     $("#tempunit").text(tempUnit); 

    $.ajax({ 
     url:'https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=AIzaSyBpiTf5uzEtJsKXReoOKXYw4RO0ayT2Opc', dataType: 'json', 
    success: function(results){ 
     $("#city").text(results.results[3].address_components[4].long_name) 
    $("#country").text(results.results[0].address_components[5].long_name) 

    } 


} 

)} 
      ); 
    }  


var location = document.getElementById("location"); 
var apiKey = "3827754c14ed9dd9c84afdc4fc05a1b3"; 
var url = "https://api.darksky.net/forecast/"; 
navigator.geolocation.getCurrentPosition(success); 
// location.innerHTML = "Locating..."; 

    } 
$(document).ready(function(){ 
weather(); 
}); 
var tempUnit = "F"; 
var currentTempInFahrenheit; 



$("#tempunit").click(function(){ 
    var currentTempUnit = $("#tempunit").text(); 
    var newTempUnit = currentTempUnit == "F" ? "C" : "F"; 
    $('#tempunit').text(newTempUnit); 
    if(newTempUnit == "F"){ 
    var celTemp = Math.round(parseInt($('#temp').text())*5/9 - 32); 
     $("#temp").text(celTemp + " " + String.fromCharcode(176)); 
    } 
    else{ 
     $("#temp").text(currentTempInFahrenheit + " " + String.fromCharCode(176)); 
    } 



}) 

答えて

0

はこれを試して、私はcodepenが仕事を得ることができた場所を嘲笑するとき、私のブラウザでは、ジオロケーションを遮断しました。

var location = document.getElementById("location"); 
var apiKey = "3827754c14ed9dd9c84afdc4fc05a1b3"; 
var url = "https://api.darksky.net/forecast/"; 
// navigator.geolocation.getCurrentPosition(success); 
var position = { coords: { latitude: 32, longitude: -96 } }; 
success(position);