• 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
222 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 243 wizyt
+1 głos
1 odpowiedź 239 wizyt
pytanie zadane 27 lipca 2021 w JavaScript przez Kytrap Początkujący (390 p.)
0 głosów
1 odpowiedź 331 wizyt
pytanie zadane 8 listopada 2018 w JavaScript przez Michał Samolewski Bywalec (2,240 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...