Irritating < > signs!
IFforClassroom
16 Aug 2021, 00:34Hi Everybody,
We've discussed the glitch in the use of 'greater than' and less than' signs before. In the past, I've found that messing around with spacing can often help to avoid triggering it. But after two days, I'm at my wit's end with just these few lines of code:
Temperature: <input type="text" id="Temperature" size="2">°C [[Enter]]
[[Enter]]:
squiffy.set("Temperature", jQuery("#Temperature").val());
{if Temperature>=35:{@feel=really hot}}
{if Temperature>=30:{if Temperature<35:{@feel=very hot}}}
{if Temperature>=25:{if Temperature<30:{@feel=hot}}}
{if Temperature>=20:{if Temperature<25:{@feel=warm}}}
{if Temperature>=15:{if Temperature<20:{@feel=cool}}}
{if Temperature>=10:{if Temperature<15:{@feel=cold}}}
{if Temperature>=5:{if Temperature<10:{@feel=very cold}}}
{if Temperature>0:{if Temperature<5:{@feel=really cold}}}
{if Temperature<=0:{@feel=freezing}}
It's {feel} ({Temperature})°C.
Squiffy keeps thinking single digits are really high. For example, I get the output:
"It's really hot (5°C)."
Does anybody know a good work around?
Thanks.
K.V.
16 Aug 2021, 01:45Hello.
It seems to work if you handle most of that with JS:
Temperature: <input type="text" id="Temperature" size="2">°C [[Enter]]
[[Enter]]:
var Temperature = jQuery("#Temperature").val();
squiffy.set("Temperature", Temperature);
var feel = "";
if (Temperature >= 35){
feel = "really hot";
} else if (Temperature >= 30 && Temperature < 35){
feel = "very hot";
} else if (Temperature >= 25 && Temperature < 30){
feel = "hot";
} else if (Temperature >= 20 && Temperature < 25){
feel = "warm";
} else if (Temperature >= 15 && Temperature < 20){
feel = "cool";
} else if (Temperature >= 10 && Temperature < 15){
feel = "cold";
} else if (Temperature >= 5 && Temperature < 10){
feel = "very cold";
} else if (Temperature > 0 && Temperature < 5){
feel = "really cold";
} else if (Temperature < 0){
feel = "freezing";
} else {
feel = "ERR"
}
squiffy.set("feel", feel);
It's {feel} ({Temperature})°C.
mrangel
16 Aug 2021, 08:16I should note that if you're using javascript, you don't need so many 'if's. You could replace this code:
if (Temperature >= 35){
feel = "really hot";
} else if (Temperature >= 30 && Temperature < 35){
feel = "very hot";
} else if (Temperature >= 25 && Temperature < 30){
feel = "hot";
} else if (Temperature >= 20 && Temperature < 25){
feel = "warm";
} else if (Temperature >= 15 && Temperature < 20){
feel = "cool";
} else if (Temperature >= 10 && Temperature < 15){
feel = "cold";
} else if (Temperature >= 5 && Temperature < 10){
feel = "very cold";
} else if (Temperature > 0 && Temperature < 5){
feel = "really cold";
} else if (Temperature < 0){
feel = "freezing";
} else {
feel = "ERR"
}
with:
feel = ["freezing","really cold","very cold","cold","cool","warm","hot","very hot"][Math.max(Math.ceil(Temperature/5),0)] || "really hot";
IFforClassroom
16 Aug 2021, 23:57Thanks K.V. and mrangel!
I consider myself too dumb for JS most of the time. I have a copypasta doc of useful JS lines that I know how to alter. I'm gonna play around with these before I paste them in. Thanks very much.
Right now I think the glitch was breaking Squiffy's recognition of place value or something. The work-around I figured out is to add the input into a separate variable, forcing it to become a countable number. Like this:
Temperature: <input type="text" id="temperature" size="2">°C [[Enter]]
[[Enter]]:
squiffy.set("temperature", jQuery("#temperature").val()); // 𝕀 𝕔𝕙𝕒𝕟𝕘𝕖𝕕 𝕚𝕥 𝕥𝕠 𝕝𝕠𝕨𝕖𝕣 𝕔𝕒𝕤𝕖 𝕙𝕖𝕣𝕖.
{@Temperature+=temperature} <!--- ℕ𝕠𝕨 "𝕋𝕖𝕞𝕡𝕖𝕣𝕒𝕥𝕦𝕣𝕖" 𝕚𝕤 𝕕𝕖𝕗𝕚𝕟𝕚𝕥𝕖𝕝𝕪 𝕒 𝕟𝕦𝕞𝕓𝕖𝕣, 𝕟𝕠𝕥 𝕒𝕟 𝕒𝕣𝕓𝕚𝕥𝕣𝕒𝕣𝕪 𝕤𝕥𝕣𝕚𝕟𝕘.--->
{if Temperature>=35:{@feel=really hot}}
{if Temperature>=30:{if Temperature<35:{@feel=very hot}}}
{if Temperature>=25:{if Temperature<30:{@feel=hot}}}
{if Temperature>=20:{if Temperature<25:{@feel=warm}}}
{if Temperature>=15:{if Temperature<20:{@feel=cool}}}
{if Temperature>=10:{if Temperature<15:{@feel=cold}}}
{if Temperature>=5:{if Temperature<10:{@feel=very cold}}}
{if Temperature>0:{if Temperature<5:{@feel=really cold}}}
{if Temperature<=0:{@feel=freezing}}
It's {feel} ({Temperature})°C.
LA-Laker
23 Sept 2021, 22:07This is interesting! I am learning more features on JavaScript. I will experiment the code myself and possibly share it with you guys.
LA-Laker
24 Sept 2021, 01:49It isn't much, but here is the added passage of the code to run it again.
[[Menu]]:
@clear
Temperature: <input type="text" id="Temperature" size="2">°C [[Enter]]
[[Enter]]:
var Temperature = jQuery("#Temperature").val();
squiffy.set("Temperature", Temperature);
var feel = "";
if (Temperature >= 35){
feel = "really hot";
} else if (Temperature >= 30 && Temperature < 35){
feel = "very hot";
} else if (Temperature >= 25 && Temperature < 30){
feel = "hot";
} else if (Temperature >= 20 && Temperature < 25){
feel = "warm";
} else if (Temperature >= 15 && Temperature < 20){
feel = "cool";
} else if (Temperature >= 10 && Temperature < 15){
feel = "cold";
} else if (Temperature >= 5 && Temperature < 10){
feel = "very cold";
} else if (Temperature > 0 && Temperature < 5){
feel = "really cold";
} else if (Temperature < 0){
feel = "freezing";
} else {
feel = "ERR"
}
squiffy.set("feel", feel);
It's {feel} ({Temperature})°C.
Run again.
[[Menu]]