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

[JS] If 3 warunki

Object Storage Arubacloud
0 głosów
230 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 288 wizyt
+1 głos
1 odpowiedź 244 wizyt
pytanie zadane 27 lipca 2021 w JavaScript przez Kytrap Początkujący (390 p.)
0 głosów
1 odpowiedź 336 wizyt
pytanie zadane 8 listopada 2018 w JavaScript przez Michał Samolewski Bywalec (2,240 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...