我正在使用Ajax来使用openweather API。除了一件事,一切都很好。
我正试图在按摄氏度和华氏度之间切换按钮。 在第一次单击时,该函数将值转换为fahrenheit,但由于某种原因,当您再次单击该按钮时,它不会将其转换回摄氏温度。 我找到了不同的解决方案,但我真的想避免复制粘贴,并找出函数逻辑中的错误。我很感激你的帮助。 Js Fiddle:https://jsfiddle.net/m8w7gyxe/1/
LE:原来错误多于一个:)。谢谢大家。
J.M.的解决方案效果很好。 https://jsfiddle.net/m8w7gyxe/31/
<form>
<input type="text" name="city" id="searchInput" placeholder="Search for a city...">
<button type="button" id="searchBtn">
<span class=" fa fa-search"></span>
</button>
</form>
<div class="temperature">
<div class="toggleBtn">
<span>℃</span> //celsius icon
</div>
<span id="temperature"></span>
</div>
<script>
let degree = '℃'; //celsius icon
let city = $('#searchInput');
const celsiusToFahrenheit = (celsius) => {
return (celsius * 9 / 5 + 32);
}
$('#searchBtn').on('click', function() {
$.ajax({
url: 'https://api.openweathermap.org/data/2.5/weather?q=' + city.val() + '&units=metric&APPID=MYAPPIDHERE',
type: 'POST',
dataType: 'json',
success(response) {
getResponse(response)
},
error(jqXHR, status, errorThrown) {
alert('City not found...');
}
});
});
function getResponse(response) {
$('#temperature').html(response.main.temp.toFixed() + ' ' + degree);
$('.toggleBtn').on('click', function() {
if (degree = '℃') { //if degree is celsius
degree = '℉'; //change degree to fahrenheit
$('#temperature').html(celsiusToFahrenheit(response.main.temp.toFixed()) + ' ' + degree);
}
if (degree = '℉') { // if degree is fahrenheit
degree = '℃'; // change degree to celsius
$('#temperature').html(response.main.temp.toFixed() + ' ' + degree);
console.log(degree); //℃
}
});
}
</script>
答案 0 :(得分:2)
几个问题:
是的,Introduceti numarul de vectori: 3
Introduceti numarul de elemente: 4
V0:1
2
3
0
V1:1
2
0
0
V2:1
0
0
1
1 2 3 0
1 2 0 0
1 0 0 1
1 2 3 0
0 0 0 0
0 0 0 0
1 2 3 0
0.642857 1.28571 -1.07143 0
0.8 -0.4 5.55112e-17 1
的处理程序应该在响应之外,如Mackija所述,您只需要值而不是响应来执行转换。
你说它可以从摄氏温度到华氏温度而不是其他方式,我没有看到从华氏温度转换为摄氏温度的功能。
.on('click')
不是比较,而是分配,所以总是通过。请改用if (degree = '℃')
您错过了if (degree == '℃')
中的重要else
,但没有else if (degree == '℉')
正在运行。
此处进行相关编辑:
if
答案 1 :(得分:1)
我认为问题是你的处理程序是在你的“getResponse”函数中声明的,这意味着当它被点击时它会尝试使用
response.main.temp.toFixed()
它不能,因为当时没有回复。尝试将处理程序移到getResponse之外,而不是使用响应中的度数从页面上当前的内容中获取它(您只需要来回转换的数字,而不是响应)