Autor | Zpráva | ||
---|---|---|---|
TomV Profil * |
Prosím o rychlé řešení, spěchá, už dnes do odpoledne...
Zdravím, dělám stránku na počítání slovních úloh o pohybu. 1. Chyba nastává při zvolení úloh Proti sobě, vyplnění rychlosti 1, 2, času navíc (např. t + 2) a celkové dráhy. V tomto případě vychází mínusové výsledky, např. t= -0.13333333333333333h. V kódu se jedná o hned první případ, if s if. Nevíte tedy, proč to vychází záporně a nevychází zkouška? 2. Chyba je u slovních úloh za sebou bez vyplněného času, zde se to také nerovná... Nevíte někdo, proč? V kódu se jedná o else else. 3. Chyba nastává u slovních úloh za sebou s vyplněným časem, zase např. 2 h. Tentokrát to neukazuje vůbec s1, s2 a zkoušku. Pokud Vám to ukazuje, obnovte si stránku a zadejte tam tyto hodnoty znovu. Po kliknutí na tlačítko jsou tyto 3 prázdné, bez výsledků. Nevíte, proč? V kódu se jedná o else if. function solve(){ var inputSpeed1 = parseInt(document.getElementById("inputSpeed1").value, 10); var inputSpeed2 = parseInt(document.getElementById("inputSpeed2").value, 10); var inputTime1 = parseInt(document.getElementById("inputTime1").value, 10); var overallLength = parseInt(document.getElementById("overallLength").value, 10); if (document.getElementById("against_each_other").checked == true) { var lengthSum = inputSpeed1 + inputSpeed2; document.getElementById("equation").innerHTML = "s1 + s2 = s"; if(inputTime1 > 0) { var x = inputSpeed1*inputTime1; var y = overallLength-x; document.getElementById("procedure").innerHTML = inputSpeed1 + " · (t + " + inputTime1 + ") + " + inputSpeed2 + "t = " + overallLength + "<br>" + inputSpeed1 + "t + " + x + " + " + inputSpeed2 + "t = " + overallLength + " /- " + x + "<br>" + lengthSum + "t = " + y + " /: " + lengthSum + "<br>" + "t = " + y/lengthSum + "h"; var result = (overallLength - inputTime1 * inputSpeed1)/(inputSpeed1 + inputSpeed2); document.getElementById("resultTime").innerHTML = result; var t1 = result + inputTime1; document.getElementById("t1").innerHTML = t1; var s1 = inputSpeed1 * (result + inputTime1); s1 = document.getElementById("s1").innerHTML; var s2 = inputSpeed2 * result; s2 = document.getElementById("s2").innerHTML; document.getElementById("test").innerHTML = s1 + s2 + "=" + overallLength; } else { document.getElementById("procedure").innerHTML = inputSpeed1 + "t + " + inputSpeed2 + "t = " + overallLength + "<br>" + lengthSum + "t = " + overallLength + " /: " + lengthSum + "<br>" + "t = " + overallLength/lengthSum + "h"; var result = overallLength / (inputSpeed1 + inputSpeed2); document.getElementById("resultTime").innerHTML = result; document.getElementById("t1").innerHTML = result; var s1 = inputSpeed1 * result; document.getElementById("s1").innerHTML = s1; var s2 = inputSpeed2 * result; document.getElementById("s2").innerHTML = s2; document.getElementById("test").innerHTML = s1 + s2 + "=" + overallLength; } } else { document.getElementById("equation").innerHTML = "s1 = s2"; if(inputTime1 > 0){ var x = inputSpeed1*inputTime1; var y = inputSpeed2-inputSpeed1; document.getElementById("procedure").innerHTML = inputSpeed1 + " · (t + " + inputTime1 + ") = " + inputSpeed2 + "t" + "<br>" + inputSpeed1 + "t + " + x + " = " + inputSpeed2 + "t" + " /- " + inputSpeed1 + "t" + "<br>" + x + " = " + y + "t /: " + y + "<br>" + "t = " + x / y + "h"; var result = (inputSpeed1 * inputTime1) / (inputSpeed2 - inputSpeed1); document.getElementById("resultTime").innerHTML = result; var t1 = result + inputTime1; document.getElementById("t1").innerHTML = t1; var s1 = inputSpeed1 * (result + inputTime1); s1 = document.getElementById("s1").innerHTML; var s2 = inputSpeed2 * result; s2 = document.getElementById("s2").innerHTML; document.getElementById("test").innerHTML = s1 + "=" + s2; } else { document.getElementById("procedure").innerHTML = inputSpeed1 + "t = " + inputSpeed2 + "t /: " + inputSpeed1 + "<br>" + "t = " + inputSpeed2/inputSpeed1 + "h"; var result = inputSpeed2/inputSpeed1 document.getElementById("resultTime").innerHTML = result; document.getElementById("t1").innerHTML = result; var s1 = inputSpeed1 * result; document.getElementById("s1").innerHTML = s1; var s2 = inputSpeed2 * result; document.getElementById("s2").innerHTML = s2; document.getElementById("test").innerHTML = s1 + "=" + s2; } } } </script> </section> </body> </html> Přitom var s1 = inputSpeed1 * (result + inputTime1); by mělo být správně pro 3. chybu, tudíž nevím, proč se to nezobrazuje vůbec.
|
||
Kajman Profil |
#2 · Zasláno: 30. 5. 2018, 10:06:57
Prohlížeče mají vývojářskou konzoli (často dostupnou přes F12), tam lze procházení skriptu krokovat. Tak si tím skript řádek pořádku projděte a kontrolujte hodnoty proměnných, jestli v nich je to, co čekáte.
|
||
Tomášeek Profil |
#3 · Zasláno: 30. 5. 2018, 10:31:09
TomV:
Ono to má víc problémů. Pokud zadám typ "Proti sobě" a vyplním číselně první 3 hodnoty (kromě "Celkem", které mi to má asi spočítat), mám ve výsledkové části místo půlky výpočtů NaN . Zkoumat a opravovat ten script se mi ale nechce.
|
||
TomV Profil * |
#4 · Zasláno: 31. 5. 2018, 16:55:22
Vše opraveno a dokonce jsem stihl i více věcí. Děkuji teda za snahu.
|
||
Časová prodleva: 7 let
|
0