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

Dołączenie checkbox do if else

VPS Starter Arubacloud
0 głosów
745 wizyt
pytanie zadane 7 grudnia 2016 w JavaScript przez enderius Nowicjusz (240 p.)

Witam ponownie, ostatnio otrzymałem wyczerpującą pomoc tylko problem się trochę rozszerzył a poprzedni temat nie był dobrze opisany. Obecnie chcę jako kolejny warunek w ostatnim if else dodać zaznaczenie checkboxa tak aby warunkiem był przedział wartości plus zaznaczenie chceckboxa powodował kolejną odpowiedź, jak mogę więc pobrać te dane ? Z góry ogromnie dziękuję za pomoc

<!DOCTYPE html>
<html lang="pl">

<head>
	<meta charset="utf-8" />
	
	<script type="text/javascript">
	
	
			function sprawdz() {
			var liczba = document.getElementById("pole").value;
			var opcja =document.getElementById("raty");
			if (liczba >= 100 && liczba <= 1000) {document.getElementById("wynik").innerHTML = "1odp";}
			else if (liczba >= 1001 && liczba <= 3000) {document.getElementById("wynik").innerHTML = "2odp";}
			else if (liczba >= 3001 && liczba <= 6000) {document.getElementById("wynik").innerHTML = "3odp";}
			else if (liczba >= 6001 && liczba <= 9000) {document.getElementById("wynik").innerHTML = "4odp";}
			else if (liczba >= 9001 && liczba <= 10000) {document.getElementById("wynik").innerHTML = "5odp";}
			else if (liczba >= 10001) {document.getElementById("wynik").innerHTML = "6 odp";}
			else if (liczba >= 100 && liczba <= 1000 && raty.ischecked()) {document.getElementById("wynik").innerHTML = "7odp";}
			
}
	
	</script>
</head>

<body>

	<input type="text" id="pole" />
	<input type="submit" value="Sprawdź" onclick="sprawdz()"/>
	<br>
	<form>
				<br>
               <input type=checkbox id="raty">4 raty<br>
	<div id="wynik"></div>

</body>

</html>

 

2 odpowiedzi

0 głosów
odpowiedź 7 grudnia 2016 przez Olaf Siwiński Mądrala (7,060 p.)
wybrane 7 grudnia 2016 przez enderius
 
Najlepsza

Witam po raz drugi ;) Twój kod nie zadziałał z kilku powodów

  • var opcja =document.getElementById("raty");
    /* ... ciało funkcji sprawdz() */
    else if (liczba >= 100 && liczba <= 1000 && raty.checked) {document.getElementById("wynik").innerHTML = "7odp";}

    Tutaj odwołujesz się do zmiennej raty, która ... nie istnieje. W górnej części cała funkcji sprawdz() zapisujesz uchwyt do checkboxa do zmiennej opcja, a nie raty.

  • if (liczba >= 100 && liczba <= 1000) {document.getElementById("wynik").innerHTML = "1odp";}
    else if (liczba >= 1001 && liczba <= 3000) {document.getElementById("wynik").innerHTML = "2odp";}
    else if (liczba >= 3001 && liczba <= 6000) {document.getElementById("wynik").innerHTML = "3odp";}
    else if (liczba >= 6001 && liczba <= 9000) {document.getElementById("wynik").innerHTML = "4odp";}
    else if (liczba >= 9001 && liczba <= 10000) {document.getElementById("wynik").innerHTML = "5odp";}
    else if (liczba >= 10001) {document.getElementById("wynik").innerHTML = "6 odp";}
    else if (liczba >= 100 && liczba <= 1000 && opcja.checked) {document.getElementById("wynik").innerHTML = "7odp";}

    W momencie, gdy kod if'ów wygląda w ten sposób może i na pierwszy rzut oka będzie działać, ale nie do końca tak jak byś tego chciał. Jeżeli warunek w pierwszym if się nie spełni, to silnik js przejdzie do sprawdzenia warunku zawartego w else if pod spodem. Tak będzie się działo aż do momentu, kiedy warunek będzie prawdziwy i po tym nie zostanie sprawdzony już żaden else if. Zauważ, że w tym przypadku w if sprawdzasz czy zmienna liczba jest większa lub równa 100 oraz czy jest mniejsza lub równa 1000. Dokładnie to samo robisz na sam koniec bloku else if dodając jedynie sprawdzanie stanu checkboxa. Oznacza to, że skrypt nigdy nie pokaże "7odp", bo jeżeli liczba będzie na przykład równa 500, to i tak wykona się tylko pierwszy if, niezależnie od stanu checkboxa. Żeby to naprawić wystarczy zmienić kolejność ifów. 

    if (liczba >= 100 && liczba <= 1000 && opcja.checked) {document.getElementById("wynik").innerHTML = "7odp";}
    else if (liczba >= 100 && liczba <= 1000) {document.getElementById("wynik").innerHTML = "1odp";}
    else if (liczba >= 1001 && liczba <= 3000) {document.getElementById("wynik").innerHTML = "2odp";}
    else if (liczba >= 3001 && liczba <= 6000) {document.getElementById("wynik").innerHTML = "3odp";}
    else if (liczba >= 6001 && liczba <= 9000) {document.getElementById("wynik").innerHTML = "4odp";}
    else if (liczba >= 9001 && liczba <= 10000) {document.getElementById("wynik").innerHTML = "5odp";}
    else if (liczba >= 10001) {document.getElementById("wynik").innerHTML = "6 odp";}

    Choćby w ten sposób.

PS. jeżeli w momencie gdy if się spełni ma się wykonać tylko jedna linia kodu, można opuścić klamry.

if (true) console.log("hey");
// jest tym samym co
if (true) {console.log("hey");}
0 głosów
odpowiedź 7 grudnia 2016 przez xmentor Nałogowiec (49,520 p.)
var opcja =document.getElementById("raty");

i

raty.ischecked()

dodatkowo, nie ischecked a checked

Podobne pytania

0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 26 września 2015 w JavaScript przez Sprat Użytkownik (620 p.)
0 głosów
7 odpowiedzi 1,960 wizyt
pytanie zadane 23 stycznia 2018 w JavaScript przez ildan91 Użytkownik (630 p.)
0 głosów
1 odpowiedź 187 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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!

...