Autor Zpráva
Misak-H
Profil *
Ahoj všem, potřebuji poradit.
Při přečtení proměnné z cookies a následnou matematickou operací (sčítání a následné dělení pro dosažení průměru) se načtená hodnota chová dost nestandardně a nechápu proč :-(
Jedná se o jednoduše o (19+37+43+26+35)/5, ale místo výsledku xx,x se zobrazí něco co odpovídá rovnici takovéto "37*2","43*2","26*2","35*2",19/5 ta poslední proměnná se nenačítá z cookies a jediná se dělí. Ty předcházející se hodnota znásobí dvěma a zapíše se jako po sobě jdoucí text.
Toto je sejmuté přímo ze stránky ... "Tin" proměnná, "a...d" hodnota načtená z cookies ...

19 -> C Tin4
37 -> C a
43 -> C b
26 -> C c
35 -> C d
748652703.8 ->°C

Zdroj vypadá takto:
<script type="text/javascript">

var CooT4a, CooT4b, CooT4c, CooT4d;
rozsekaneCookies=document.cookie.split("; ")
poleCookies= new Array;
for(i in rozsekaneCookies){poleCookies[(rozsekaneCookies[i].split("=")[0])] = rozsekaneCookies[i].split("=")[1];}
CooT4a = poleCookies["T4a"];
CooT4b = poleCookies["T4b"];
CooT4c = poleCookies["T4c"];
CooT4d = poleCookies["T4d"];

var Tin4 = '~in3ad~' - 273;
var T4;

      T4 = (CooT4a + CooT4b + CooT4c + CooT4d + Tin4) / 5;

document.write(Tin4 + " -> Tin4");
document.write(CooT4a + " -> a");
document.write(CooT4b + " -> b");
document.write(CooT4c + " -> c");
document.write(CooT4d + " -> d");
document.write(T4 + " ->°C");

</script>

Možné to bude nějaká blbost, ale já ne to ne a ne přijít ...

Předem díky za pomoc, M.

Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Chamurappi
Profil
Reaguji na Misaka-H:
poleCookies= new Array;
To ve skutečnosti nebude pole. Pracuješ s ním jako se strukturou/objektem.

Kousky rozsekaných cookies jsou řetězce, takže jejich sečtením dostaneš také řetězec. Chceš-li je převést na číslo, použij vynásobení jedničkou, či funkce parseInt nebo parseFloat.

Popisované chování mi však nesedí. Nerozumím, jak se může do T4 dostat číslo, mělo by tam být NaN (tj. „not a number“). Rovněž přiřazení „Tin4 = '~in3ad~' - 273“ mi připadá docela nesmyslné, protože z odečtení čísla od řetězce také nic smysluplného nevyleze.
Misak-H
Profil *
Moooc díky, už to funguje :-) To jsem nevěděl ... :-(

Jedná se o speciálnější alplikaci pro LAN modul, podrobnější info na ...
Odkaz

Vysvětlím „Tin4 = '~in3ad~' - 273“
Tin4 - Vstupní proměnná z třetího A/D vstupu procesoru, od které se odečte -273, to pro převod z °F na °C, tím je Tin4 reálná hodnota měřené teploty přímo ve °C. Toto funguje na jedničku.

PS: Včera jsem tu byl poprvé, tak jsem nevěděl jak se vkládají kódy, příště se to již nestane.

Ještě jenou díky !! M.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: