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
if (costam) jakasFunkcja()
else innaFunkcja()
u Ciebie jest
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.
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ć
document.getElementById("cyfra").textContent
Tylko weź poprawkę na to, że textContent
jest typu string
i jeżeli chciałbyś np. zsumować 2 liczby
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.
parseInt(document.getElementById('#liczba1').textContent)
Lub jeżeli jest zmiennoprzecinkowa, np 3.5
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 [...]