我正在开发这个天气应用程序,但我遇到了一个问题,我无法将数据集中的特定条件显示在屏幕上。它始终显示其中一个城市的是否条件,但不显示其他城市。如果可能的话,我需要一些帮助,如果你指出我所犯的任何错误,可能会有很大的帮助。
//The variables
var low = getColumn("Daily Weather", "Low Temperature");
var high = getColumn("Daily Weather", "High Temperature");
var city = getColumn("Daily Weather", "City");
var icon = getColumn("Daily Weather", "Icon");
var condition = getColumn("Daily Weather", "Main Condition");
var forecastNum = getColumn("Daily Weather", "Forecast Number");
var id = 0;
//filtered variables
var todayLow = [];
var todayHigh = [];
var todayCondition = [];
var todayIcon = [];
onEvent("locationDropdown", "change", function( ) {
if (getText("locationDropdown") == "Anchorage, Alaska") {
id = 1;
} else if ((getText("locationDropdown") == "Fairbanks, Alaska")) {
id = 6;
} else if ((getText("locationDropdown") == "Denver/Boulder, Colorado")) {
id = 16;
} else if ((getText("locationDropdown") == "Chicago, Illinois")) {
id = 31;
} else if ((getText("locationDropdown") == "Des Moines, Iowa")) {
id = 56;
} else if ((getText("locationDropdown") == "Goodland, Kansas")) {
id = 66;
} else if ((getText("locationDropdown") == "Louisville, Kentucky")) {
id = 86;
} else {
id = 96;
}
});
onEvent("conditionButton", "click", function( ) {
updateScreen();
setScreen("screen2");
});
onEvent("conditionButton1", "click", function( ) {
updateScreen();
setScreen("screen2");
});
onEvent("tempButton", "click", function( ) {
updateScreen();
setScreen("screen3");
});
onEvent("homeButton1", "click", function( ) {
updateScreen();
setScreen("screen1");
});
onEvent("homeButton2", "click", function( ) {
updateScreen();
setScreen("screen1");
});
onEvent("temperatureButton", "click", function( ) {
updateScreen();
setScreen("screen3");
});
function updateScreen() {
var index = id;
console.log(id);
for (var i = 0; i < 8; i++) {
if (forecastNum[i] == 1) {
appendItem(todayLow, low[i]);
appendItem(todayHigh, high[i]);
appendItem(todayCondition, condition[i]);
appendItem(todayIcon, icon[i]);
}
}
setText("lowTemp", todayLow[1]);
setText("highTemp", todayHigh[1]);
setText("label2", todayCondition[1]);
setProperty("image2", "image", todayIcon[1]);
console.log(idNum);
console.log(index);
console.log(todayLow);
}=
发布于 2021-04-21 21:47:59
function updateScreen() {
var index = id;
console.log(id);
for (var i = 0; i < 8; i++) {
if (forecastNum[i] == 1) {
appendItem(todayLow, low[i]);
appendItem(todayHigh, high[i]);
appendItem(todayCondition, condition[i]);
appendItem(todayIcon, icon[i]);
}
}
setText("lowTemp", todayLow[1]);
setText("highTemp", todayHigh[1]);
setText("label2", todayCondition[1]);
setProperty("image2", "image", todayIcon[1]);
console.log(idNum);
console.log(index);
console.log(todayLow);
}如果我错了,请纠正我,但我相信这就是问题所在。每当您想要更新屏幕时,它只会将其更新为todayLow todayHigh todayCondition和todayIcon数组中的索引1。您应该找到一种方法来根据用户选择的下拉列表自动更改该值,而不是将"1“作为这些值的数组。而且,你做的并不是一件坏事,而是没有做:
onEvent("locationDropdown", "change", function( ) {
if (getText("locationDropdown") == "Anchorage, Alaska") {
id = 1;
} else if ((getText("locationDropdown") == "Fairbanks, Alaska")) {
id = 6;
} else if ((getText("locationDropdown") == "Denver/Boulder, Colorado")) {
id = 16;
} else if ((getText("locationDropdown") == "Chicago, Illinois")) {
id = 31;
} else if ((getText("locationDropdown") == "Des Moines, Iowa")) {
id = 56;
} else if ((getText("locationDropdown") == "Goodland, Kansas")) {
id = 66;
} else if ((getText("locationDropdown") == "Louisville, Kentucky")) {
id = 86;
} else {
id = 96;
}
});你也可以这样做:
onEvent("locationDropdown", "change", function( ) {
switch (getText("locationDropdown")) {
case "Anchorage, Alaska":
id = 1;
break;
case "Fairbanks, Alaska":
id = 6;
break;
case "Denver/Boulder, Colorado":
id = 16;
break;
case "Chicago Illinois":
id = 31;
break;
case "Des Moines, Iowa":
id = 56;
break;
case "Goodland, Kansas":
id = 66;
break;
case "Louisville, Kentucky":
id = 86;
break;
default:
id = 96;
break;
}
});switch statement在代码中非常有用,因为它节省了时间,因为您不再需要为编写的每个其他if语句编写getText("locationDropdown")。
无论如何,我希望我的回答至少有一点帮助。祝你好运!
https://stackoverflow.com/questions/66511112
复制相似问题