• 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
102 wizyt
pytanie zadane 6 stycznia w JavaScript, jQuery, AJAX przez 42savage Obywatel (1,460 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 Obywatel (1,460 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 Obywatel (1,460 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 Obywatel (1,460 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ź 74 wizyt
0 głosów
1 odpowiedź 1,493 wizyt
0 głosów
2 odpowiedzi 48 wizyt
pytanie zadane 21 czerwca w Systemy operacyjne, programy przez Nowy Obywatel (1,010 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

64,818 zapytań

111,275 odpowiedzi

234,017 komentarzy

46,696 pasjonatów

Przeglądających: 241
Pasjonatów: 10 Gości: 231

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.

...