Javascript pod spodem "dodaje średnik" dla każdej linijki kodu, więc w Twoim przypadku if nie ma ciała.
jeśli chciałbyś zrobić ifa bez klamerek, to musisz umieścić wszystko w jednej linii
Kopiuj
if (costam) jakasFunkcja()
else innaFunkcja()
u Ciebie jest
Kopiuj
if(liczba>0); // nic, koniec warunku
document.getElementById("wynik").innerHTML="dodatnia"; // to wykonuje się poza ciałem ifa, więc wynik ma wartość "dodatnia"
else; // ten przypadek nie jest brany pod uwagę, bo nie ma ciała
document.getElementById("wynik").innerHTML="nie dodatnia"; // a to się wykona zawsze (o ile nic innego się po drodze nie wykrzaczy), więc zawsze element "wynik" będzie miał wartość "nie dodatnia"
Ale zdecydowanie odradzam ze względu na czytelność. Używaj klamerek. Zawsze.
Kopiuj
if (costam) {
jakasFunkcja()
}
W Twoim przypadku na pierwszy rzut oka widzę .Value zamiast .value ale to szczegół, bo elementy tekstowe nie mają czegoś takiego, jak value. Mogą mieć data-attributes, textContent, albo innerHtml, albo id, albo...
Inputy itp. mają value.
W tym przypadku powinieneś wykonać
Kopiuj
document.getElementById("cyfra").textContent
Tylko weź poprawkę na to, że textContent jest typu string i jeżeli chciałbyś np. zsumować 2 liczby
Kopiuj
var liczba1 = document.getElementById('#liczba1').textContent // niech ma wartość 8
var liczba2 = document.getElementById('#liczba1').textContent // niech ma wartość 3
var wynik = liczba1 + liczba2 // i tu zamiast wykonać 8 + 3 = 11, nastąpi interpolacja stringów i wynik będzie równy 83.
Powinieneś też zrzutować wartość na typ number, np jeżeli liczba jest całkowita.
Kopiuj
parseInt(document.getElementById('#liczba1').textContent)
Lub jeżeli jest zmiennoprzecinkowa, np 3.5
Kopiuj
parseFloat(document.getElementById('#liczba1').textContent)
#edit
No i jeszcze nazwa tematu - nic nie mówi, jak ktoś będzie miał podobny problem, to nie znajdzie Twojego tematu i założy kolejny, i kolejny [...]