我尝试做的是创建一个switch语句,该语句从JSON API获取数据并根据用户的位置打印它。
例如,如果用户位于美国,则仅打印城市和州。如果位于美国境外,则会打印城市和国家/地区。如果城市是空字符串,则它仅打印国家/地区。
截至目前,无论我将VPN设置到哪个位置,都会转到默认情况(城市和国家/地区)。
var location;
var city;
var state;
var country;
$.getJSON("http://ipinfo.io", function(data) {
console.log(data);
location = data.loc;
city = data.city;
state = data.region;
country = data.country;
switch (data) {
case country === 'US':
$("#yourCity").html(city + ", " + state);
break;
case city === "":
$("#yourCity").html(country);
break;
default:
$("#yourCity").html(city + ", " + country);
}
我选择使用switch语句而不是if语句,因为我可能希望稍后在线上添加更多案例。
非常感谢任何帮助。
答案 0 :(得分:4)
您需要在switch语句中传递比data
更具体的内容。由于data
是一个对象,而不是country
或city
,因此它会直接进入默认值。
我认为你正在考虑当它通过案例时,它会查看对象并查看它是否具有值国家或城市,但事实并非如此。您需要传递switch(data.location)
之类的内容,然后data.location值可以是国家/地区或城市。所以你可能需要稍微改变一下。希望有意义!
答案 1 :(得分:1)
Switch-case语句只能用于将一个值与其他几个值进行比较。根据您的代码示例,您尝试使用switch case比较国家和城市。这是不可能的,绝对你必须使用if-else语句处理这个。
请考虑以下方法。
var location;
var city;
var state;
var country;
$.getJSON("http://ipinfo.io", function(data) {
console.log(data);
location = data.loc;
city = data.city;
state = data.region;
country = data.country;
if(country === 'US'){
$("#yourCity").html(city + ", " + state);
}else{
if(city===''){
$("#yourCity").html(country);
}else{
$("#yourCity").html(city + ", " + country);
}
}
您还以错误的方式使用了switch case语句。 Switch case语句没有算术比较符号。尝试切换case语句如下。
var day = new Date().getDay();
switch (day) {
case 4:
case 5:
text = "Soon it is Weekend";
break;
case 0:
case 6:
text = "It is Weekend";
break;
default:
text = "Looking forward to the Weekend";
}
答案 2 :(得分:0)
您没有正确使用开关盒。
基本上,您需要传递特定类型的data
。目前,switch
变量不是country
也不是city
,因此它直接转到default
。
进一步阅读: