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

[JS] If 3 warunki

0 głosów
94 wizyt
pytanie zadane 6 stycznia w JavaScript, jQuery, AJAX przez 42savage Użytkownik (750 p.)
edycja 6 stycznia 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 przez Grzegorz :> Dyskutant (8,010 p.)
wybrane 6 stycznia 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 przez 42savage Użytkownik (750 p.)
Dzięki, pomogłeś :)
+1 głos
odpowiedź 6 stycznia 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 przez 42savage Użytkownik (750 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 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 przez 42savage Użytkownik (750 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
1 odpowiedź 68 wizyt
0 głosów
1 odpowiedź 1,310 wizyt
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 6 czerwca 2016 w JavaScript, jQuery, AJAX przez mac-rum Użytkownik (620 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

61,358 zapytań

107,302 odpowiedzi

223,481 komentarzy

33,079 pasjonatów

Przeglądających: 287
Pasjonatów: 16 Gości: 271

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...