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

DZIWNE RZECZY W JS xd

VPS Starter Arubacloud
+1 głos
724 wizyt
pytanie zadane 27 lipca 2021 w JavaScript przez Kytrap Początkujący (390 p.)

Witam to znowu ja... xd

mam taki problem, robię program który ma po wpisaniu do niego dwuch wartość wypisać liczby pomiędzy nimi.

Problemy jakie z nim mam to takie że nie wiem jak zabezpieczyć go przed tym by po wpisaniu liter wyświetliło się komunikat że w danym oknie jest niewłaściwa wartość... xd

a najważniejszy i nie do garnięcia przez zemnie problem jest taki że jak napiszę 2 i liczbę z zakresu 10-19 niezależnie w którym oknie to nie wyświetlają się liczby pomiędzy tylko ta która jest w pierwszym oknie ze wszystkimi innymi liczbami działa z innymi nie... o co kurna chodzi xd 

<!doctype HTML>
<html lang="pl">
	<head>
		<meta charset = "utf-8">
		<script type="text/javascript">
			function warunek()
			{
				var liczba1 = document.getElementById("pole1").value;
				var liczba2 = document.getElementById("pole2").value;
				if (liczba1 > liczba2){unsubscribe2();}
				else if (liczba1 < liczba2){unsubscribe1();}
				else if ((liczba1==""!="0")||(liczba2==""!="0")||(liczba1==" "!="0")||(liczba2==" "!="0"))document.getElementById("wynik").innerHTML = "nie wpisano wszystkich danych";
				else if ((liczba1=="")||(liczba2==""))document.getElementById("wynik").innerHTML = "nie wpisano wszystkich danych";
				else document.getElementById("wynik").innerHTML = "to nie są prawidłowe znaki";
				
				function unsubscribe1()
				{
					var liczba1 = document.getElementById("pole1").value;
					var liczba2 = document.getElementById("pole2").value;
					var napis = "";
					
					for(i=liczba1;i<=liczba2;i++)
						{
							napis = napis+i+" ";
						}
					document.getElementById("wynik").innerHTML=napis;
					
				}
				function unsubscribe2()
				{
					var liczba1 = document.getElementById("pole1").value;
					var liczba2 = document.getElementById("pole2").value;
					var napis = "";
					
					for(i=liczba1;i>=liczba2;i--)
						{
							napis = napis+i+" ";
						}
					document.getElementById("wynik").innerHTML=napis;
					
				}
				
			}
		</script>
	</head>
	<body>
		
		<input type="text" id="pole1"/>
		<input type="text" id="pole2"/>
		<input type="submit" value="pokaż" onclick="warunek()"/>
		<div id="wynik"></div>
	</body>
</html>

 

2
komentarz 27 lipca 2021 przez lateM Pasjonat (17,660 p.)
*dwóch
1
komentarz 27 lipca 2021 przez Comandeer Guru (599,730 p.)

@Kytrap, proszę zmienić tytuł wątku na opisujący problem.

2 odpowiedzi

+1 głos
odpowiedź 27 lipca 2021 przez VBService Ekspert (251,210 p.)
edycja 27 lipca 2021 przez VBService

[ edit ]

Sprawdź to: Input value is a string instead of a number i będzie działać.  wink

 

 

Możesz zastosować <input type="number"> i ten warunek

if (liczba1 > liczba2){unsubscribe2();}
else if (liczba1 < liczba2){unsubscribe1();}
else if ((liczba1==""!="0")||(liczba2==""!="0")||(liczba1==" "!="0")||(liczba2==" "!="0"))document.getElementById("wynik").innerHTML = "nie wpisano wszystkich danych";
else if ((liczba1=="")||(liczba2==""))document.getElementById("wynik").innerHTML = "nie wpisano wszystkich danych";
else document.getElementById("wynik").innerHTML = "to nie są prawidłowe znaki";

można zapisać tak

if (!liczba1 || !liczba2) 
  document.getElementById("wynik").innerHTML = "nie wpisano wszystkich danych";
else {
  if (liczba1 > liczba2) unsubscribe2();
  else if (liczba1 < liczba2) unsubscribe1();
}

 

komentarz 27 lipca 2021 przez Kytrap Początkujący (390 p.)

nadal są takie same błędy jak z 2 i 13... xd

4
komentarz 27 lipca 2021 przez Wiciorny Ekspert (269,120 p.)

@.::VBService::.,  tez nie próbuj non stop dawać gotowców, a wskazówki to jest forum tutaj naszym celem jest zmusić do samodzielnej pracy i myślenia więc... miej to na uwadzę co jest w regulaminie 

komentarz 27 lipca 2021 przez VBService Ekspert (251,210 p.)
edycja 27 lipca 2021 przez VBService

HTML text input allow only numeric input

 

jak w funkcji warunek(), pobierasz wartości z pole1 i pole2

function warunek()
{
  var liczba1 = document.getElementById("pole1").value;
  var liczba2 = document.getElementById("pole2").value;

  . . .

do zmiennych liczba1, liczba2 i poddajesz je walidacji, to nie ma potrzeby odczytywać ich jeszcze raz w funkcjach unsubscribe1(), unsubscribe2(),

function unsubscribe1()
{
  var liczba1 = document.getElementById("pole1").value;
  var liczba2 = document.getElementById("pole2").value;

  . . .

możesz przekazać te wartości jako parametry funkcji.

komentarz 27 lipca 2021 przez VBService Ekspert (251,210 p.)
edycja 3 sierpnia 2021 przez VBService

Talk is cheap. Show me the code!
Linus Torvalds

1
komentarz 27 lipca 2021 przez Wiciorny Ekspert (269,120 p.)
wróć jeszcze raz i sprawdź co kolega dodał w pytaniu, bo dodanie 1 lini do czyjgos kodu to wiesz, zreszta co ja mam pisac, twoje odp. padaja  czesto jako kopia kogoś kto był wczesniej więc wiesz...
3
komentarz 28 lipca 2021 przez Arkadiusz Waluk Ekspert (287,550 p.)

@VBService, jak cytujesz to mógłbyś jednak albo używać tekstowego cytatu albo linka, robienie wielkich screenów nie jest wygodne.

Ponadto, gdy ktoś Ci zwraca uwagę na coś, to mógłbyś się też zastanowić czy może nie ma w tym jakiejś racji (może ma, może nie - zależy od przypadku i nie mówię, że masz zawsze uznawać że ma) i finalnie odpowiedzieć bardziej merytorycznie niż tylko powiedzieć, że "on też" - bo to żaden poziom argumentacji, a wręcz trochę pokazanie, że się nie ma innego argumentu niż "a bo on też".

Ja również zwracałem Ci uwagę i tłumaczyłem, że w większości przypadków takie przygotowanie dla kogoś gotowca nie ma sensu i działa bardziej negatywnie. A tam gdzie nie ma podanych konkretów, a Ty sam dorabiasz za kogoś gotowca wymyślając sporo od siebie to już w ogóle - bo obudowujesz to w coś, o co dany pytający wcale nie pytał i może w ogóle tego nie rozumieć, gdy poprosił tylko o wyjaśnienie danej rzeczy. Czyli dałeś duży przykład z intencją, że całość łatwiej zrozumie, a tak naprawdę tylko jeszcze bardziej mu to zagmatwa. Tak, wszystko zależy od sytuacji, czasem faktycznie nie da się inaczej niż wskazać na gotowo co jest źle, ale często się da kogoś tylko naprowadzić, aby sam doszedł do rozwiązania, a nie wcisnąć gotowe.

–1 głos
odpowiedź 27 lipca 2021 przez Wiciorny Ekspert (269,120 p.)
edycja 27 lipca 2021 przez Wiciorny

(liczba1==""!="0")

wiesz co tu się dzieje ? sprawdzasz czy true/false jest != "o" co jest zawsze wartością (rezultatem pierwszego działania) o ile nie jest to wartość numeryczna 0/1 bo jeśli porównasz true do 1 => to jest prawda natomiast analogicznie flase => to odpowiednik 0,  stąd to generalnie nie zadziała jak oczekujesz 

komentarz 27 lipca 2021 przez Kytrap Początkujący (390 p.)
to co zrobić by nie traktowało spacji lub braku zapisu jako zera i co z literkami xd
komentarz 27 lipca 2021 przez Wiciorny Ekspert (269,120 p.)
zapoznać się z takimi funkcjami jak trim() i  length :)

skoro 1 literka, to length jest =1, a trim usuwa spacje stąd "  ".trim() == 0 ? sprawdzasz i masz
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length

dwa przykłady

Podobne pytania

–1 głos
0 odpowiedzi 414 wizyt
pytanie zadane 26 września 2021 w C# przez Joh Początkujący (300 p.)
+3 głosów
1 odpowiedź 761 wizyt
+1 głos
1 odpowiedź 389 wizyt
pytanie zadane 6 listopada 2018 w Grafika i multimedia przez michh123 Bywalec (2,790 p.)

92,454 zapytań

141,262 odpowiedzi

319,088 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!

...