| 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