• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[JS] If 3 warunki

VPS Starter Arubacloud
0 głosów
243 wizyt
pytanie zadane 6 stycznia 2019 w JavaScript przez 42savage Bywalec (2,630 p.)
edycja 6 stycznia 2019 przez 42savage

Witam, witam. 

A więc mam pewne 3 pola input, zadaniem mojego skryptu jest, aby sprawdził czy przynajmniej dwa pola są uzupełnione.

I tu pojawia się problem, bo jeszcze pierwsze dwa pola potrafie sprawdzić z trzecim mam problem.

 

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
    <label for = "polak"><a>Polak</a></label><input id="polak"><br><br>
    <label for = "nowak"><a>Nowak</a></label><input id="nowak"><br><br>
    <label for = "rysik"><a>Rysik</a></label><input id="rysik"><br><br>
    <button id="submit">wyznacz</button>
    <div id="wynik"></div>
</body>
</html>
    var subBtn = document.getElementById("submit");
    subBtn.addEventListener("click", oblicz);
    function oblicz(){
        var wynik = document.getElementById("wynik");
        var polak = parseFloat(document.getElementById("polak").value);
        var nowak = parseFloat(document.getElementById("nowak").value);
        var rysik = parseFloat(document.getElementById("rysik").value);
        
        if( isNaN(polak) || isNaN(nowak) && isNaN(rysik) ){
            console.log('Wprowadz liczbe');
        }
    } 

 

2 odpowiedzi

+1 głos
odpowiedź 6 stycznia 2019 przez Grzegorz :> Dyskutant (8,050 p.)
wybrane 6 stycznia 2019 przez 42savage
 
Najlepsza
Ja bym to zrobił troszke inaczej. Inputy wsadziłbym do pętli i po kolei sprawdzał, czy mają odpowiednią wartość. Następnie za pomocą zmiennej zliczałbym wypełnione pola. Jeśli ich liczba będzie wynosić 2 lub 3, to warunek się spełni.

Codepen:
https://codepen.io/gCode1/pen/gZzOPR?editors=1010

Mam nadzieję, że pomogłem, pozdrawiam :>
komentarz 6 stycznia 2019 przez 42savage Bywalec (2,630 p.)
Dzięki, pomogłeś :)
+1 głos
odpowiedź 6 stycznia 2019 przez niezalogowany
Zadanie z arkusza egzaminacyjnego ze stycznia 2018 :)

1. W pliku HTML w linii 6 zamykasz tag BODY? Chyba autouzupełnianie ci samo zamknęło.

2. W którym miejscu podpinasz skrypt do dokumentu?

3. W linii 9 skryptu zamień && na || (czyli "i" na "lub"). Wystarczy aby dowolny z warunków był prawdziwy (user nie podał liczby), aby dalej nie liczyć.
komentarz 6 stycznia 2019 przez 42savage Bywalec (2,630 p.)
1. Poprawione, chociaż to chyba nie wpływa na działanie skryptu.

2. Na końcu, przed zamykającym tagiem body

3. Jak zmienię && na || to skrpyt i tak działa niepoprawnie, bo gdy wprowadzę dwie wartości wyskakuje komunikat.
komentarz 6 stycznia 2019 przez niezalogowany

Przerobiłam trochę twój skrypt:

var subBtn = document.getElementById("submit");
subBtn.addEventListener("click", oblicz);
function oblicz(){
	var wynik = document.getElementById("wynik");
	wynik.innerHTML = '';
    var polak = parseFloat(document.getElementById("polak").value);
    var nowak = parseFloat(document.getElementById("nowak").value);
    var rysik = parseFloat(document.getElementById("rysik").value);
     
    if( isNaN(polak) || isNaN(nowak) || isNaN(rysik) ){
        wynik.innerHTML = 'Wprowadz liczbe';
    }
}

Funkcja parseFloat zwraca NaN, gdy nie może skonwertować ciągu na liczbę. Gdy nie wprowadzisz nic do pola, to pusty ciąg daje w wyniku NaN. Wtedy jeden z warunków jest prawdziwy i masz komunikat. Poczytaj sobie tutaj: O funkcji parseFloat

Możesz także dokonać konwersji ciągu na liczbę w sposób następujący:

var polak = document.getElementById("polak").value*1;
var nowak = document.getElementById("nowak").value*1;
var rysik = document.getElementById("rysik").value*1;

Wtedy skrypt jest bardziej tolerancyjny i gdy nic nie wpiszesz w polu konwertuje pusty ciąg na liczbę 0. Ale nie jest to sposób zalecany.

komentarz 6 stycznia 2019 przez 42savage Bywalec (2,630 p.)
Dalej nie działa tak jak powinien. Zamiast inner jest console.log() żebym mógł sprawdzić każdą kombinację.

Podobne pytania

0 głosów
0 odpowiedzi 392 wizyt
+1 głos
1 odpowiedź 252 wizyt
pytanie zadane 27 lipca 2021 w JavaScript przez Kytrap Początkujący (390 p.)
0 głosów
1 odpowiedź 353 wizyt
pytanie zadane 8 listopada 2018 w JavaScript przez Michał Samolewski Bywalec (2,240 p.)

92,768 zapytań

141,695 odpowiedzi

320,510 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...