Sprawdzenie czy liczba jest dodatnia

Sprawdzenie czy liczba jest dodatnia
G1
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
  • Postów:2
0

Dlaczego tak prosta funkcja nie dziala zanczy pomija if przy dodatniej wartości liczby... co bym nie wpsal w pole zwraca "nie dodatnia"

Kopiuj
var liczba = document.getElementById("cyfra").Value ;
 
function dolar()

{
    
        if(liczba>0)
        
        document.getElementById("wynik").innerHTML="dodatnia";

        else 
        
        document.getElementById("wynik").innerHTML="nie dodatnia";
        
}
edytowany 1x, ostatnio: Riddle
ZD
Tytuł powinien nieść znaczącą treść, wskazywać dziedzinę o jaka chodzi. Zrobiłeś dużo, aby najlepsi specjaliści cie pominęli
gk1982
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 dni
  • Lokalizacja:Łódź
  • Postów:541
0
Kopiuj
var liczba = document.getElementById("cyfra").textContent;

Don't give up learning JavaScript!
It is enjoyable to make things visible which are invisible.
Każdy programista przybywający z innego miasta jest fachowcem.
Anyone who stops learning is old, whether at twenty or eighty.
Anyone who keeps learning stays young.
The greatest thing in life is to keep your mind young.
Gouda105
To raczej input jest
katakrowa
  • Rejestracja:około 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
1

Na początek nie tak:

Kopiuj
var liczba = document.getElementById("cyfra").Value ;

tylko:

Kopiuj
var liczba = document.getElementById("cyfra").value ;

Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
MT
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:6
3

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 [...]

edytowany 1x, ostatnio: mister_tornister
Xarviel
Ten fragment o "warunku i klamerkach" jest nie do końca trafny, bo taki zapis normalnie zadziała w przeglądarce.
G1
  • Rejestracja:ponad 2 lata
  • Ostatnio:prawie 2 lata
  • Postów:2
0

Dziekuje wszytskim za podpowiedzi ,problem był jednak taki ze funkcja nie widziała zadeklarowanej zmiennej globalnej wsumie nie wrozumie czemu...?

obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 godziny
0
mister_tornister napisał(a):

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"


Ten post powinien być usunięty jako szkodliwy - połowa postu to kłamstwa. Po pierwsze to nie jest takie proste jak "javascript dodaje średnik do każdej linijki" - jest kilka reguł kiedy średnik jest dodany i są opisane tutaj: https://262.ecma-international.org/7.0/#sec-rules-of-automatic-semicolon-insertion

W przypadku ifa średniki nie są dodawane i nie są tu potrzebne; gdyby były to linijka z "else" wyrzuciłaby błąd Uncaught SyntaxError: Unexpected token 'else'.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10051
0
Gumol1988 napisał(a):

Dlaczego tak prosta funkcja nie dziala zanczy pomija if przy dodatniej wartości liczby... co bym nie wpsal w pole zwraca "nie dodatnia"

Kopiuj
var liczba = document.getElementById("cyfra").Value ;
 
function dolar()

{
    
        if(liczba>0)
        
        document.getElementById("wynik").innerHTML="dodatnia";

        else 
        
        document.getElementById("wynik").innerHTML="nie dodatnia";
        
}

Myślę że możesz poprawić kilka rzeczy, na początek, pamiętaj że atrybuty w JavaScript są pisane tzw. camelCase'em, tzn wartość której szukasz najpewniej jest w .value (a nie w .Value). Są języki które ignorują wielkość liter, ale JavaScript nie jest jednym z nich.

Dodatkowo, raczej korzystaj z innerText żeby podmienić wartość tekstową róznych elementów, uciekaj się do .innerHTML dopiero w ostateczności (to może powodować różne niefajne problemy z wyświetlaniem treści, jeśli niepoprawnie się obsłuży różne wartości).

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)