Javascript 切换div中包含的html
我正在尝试切换一个div,这样当单击它时,它会将温度转换为华氏温度,当再次单击时,它会恢复到最初由api拉入的摄氏度读数 当我只处理数字时,代码有效:Javascript 切换div中包含的html,javascript,jquery,Javascript,Jquery,我正在尝试切换一个div,这样当单击它时,它会将温度转换为华氏温度,当再次单击时,它会恢复到最初由api拉入的摄氏度读数 当我只处理数字时,代码有效: var fahrenheit = (data.main.temp * 1.8 + 32).toFixed(2); var celsius = data.main.temp; $("#temp").on("click", function() { $("#temp").html($("#temp").html() == fahrenheit ?
var fahrenheit = (data.main.temp * 1.8 + 32).toFixed(2);
var celsius = data.main.temp;
$("#temp").on("click", function() {
$("#temp").html($("#temp").html() == fahrenheit ? celsius : fahrenheit)
});
但当我尝试向html添加文本时,它不起作用,它会切换一次到华氏温度转换,但再次单击时不会切换回
var fahrenheit = (data.main.temp * 1.8 + 32).toFixed(2);
var celsius = data.main.temp;
$("#temp").on("click", function() {
$("#temp").html($("#temp").html() == fahrenheit + "° F" ? celsius + "° C" : fahrenheit + "° F")
});
这件事让我有点为难。我四处寻找,但似乎找不到适合我想做的事情的解决方案
谢谢你的帮助
这里是我的的链接,您的问题在通过JavaScript onclick检查中 当您检查它时,您使用的是JavaScript,因此不应使用度数的HTML实体,您只需使用度数字符: 更改此项:
$("#temp").html($("#temp").html() == fahrenheit + "° F" ? celsius + "° C" : fahrenheit + "° F")
为此:
$("#temp").html($("#temp").html() == fahrenheit + "° F" ? celsius + "° C" : fahrenheit + "° F" )
您必须检查当前是否以摄氏度显示,然后根据该值做出决定
$("#temp").on("click", function() {
var isCelsius = $(this).html().indexOf('C') > -1;
$('#temp').html(isCelsius ? celsius + '° C' : fahrenheit + '° F');
});
当您使用html()获取值时,您将获得解析的html,因此您没有°
html实体,而是解析的值
要修复代码,可以比较degree实体的hexcode值
$("#temp").on("click", function() {
$("#temp").html($("#temp").text() == fahrenheit + "\xB0 F" ? celsius + "\xB0 C" : fahrenheit + "\xB0 F")
});
您可以只比较数字(没有最后3’°F或°C’字符)
var fahrenheit=(data.main.temp*1.8+32).toFixed(2);
变量摄氏度=data.main.temp;
$(“#temp”)。在(“单击”,函数(){
var numberOnly=$(“#temp”).html().length-3;
$(“#temp”).html($(“#temp”).html()。子字符串(0,数字)==华氏度?摄氏度+“° C”:华氏度+”° F”);
});代码>那么#temp
是一个??请包括标记。抱歉,对于使用此网站来说是新手,#temp是元素的id。我将编辑我的原始帖子,添加到代码笔的链接。谢谢你的提醒。我猜这可能与°
有关。当放入html时,它会变成°
,这将如何比较?谢谢。我的问题简单,显然表明我缺乏经验。这很好用。不用担心,用你的天气应用程序编码也很开心:)