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

DZIWNE RZECZY W JS xd

Fiszki IT
Fiszki IT
+1 głos
184 wizyt
pytanie zadane 27 lipca w JavaScript przez Kytrap Początkujący (340 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 przez lateM Pasjonat (17,780 p.)
*dwóch
1
komentarz 27 lipca przez Comandeer Guru (558,640 p.)

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

2 odpowiedzi

+1 głos
odpowiedź 27 lipca przez VBService VIP (121,040 p.)
edycja 27 lipca 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 przez Kytrap Początkujący (340 p.)

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

4
komentarz 27 lipca przez Wiciorny Mędrzec (166,910 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 przez VBService VIP (121,040 p.)
edycja 27 lipca 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 przez VBService VIP (121,040 p.)
edycja 3 sierpnia przez VBService

Talk is cheap. Show me the code!
Linus Torvalds

1
komentarz 27 lipca przez Wiciorny Mędrzec (166,910 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 przez Arkadiusz Waluk Ekspert (278,280 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 przez Wiciorny Mędrzec (166,910 p.)
edycja 27 lipca 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 przez Kytrap Początkujący (340 p.)
to co zrobić by nie traktowało spacji lub braku zapisu jako zera i co z literkami xd
komentarz 27 lipca przez Wiciorny Mędrzec (166,910 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

+3 głosów
1 odpowiedź 65 wizyt
+1 głos
1 odpowiedź 199 wizyt
pytanie zadane 6 listopada 2018 w Grafika i multimedia przez michh123 Bywalec (2,780 p.)
0 głosów
2 odpowiedzi 84 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

84,736 zapytań

133,542 odpowiedzi

295,952 komentarzy

56,001 pasjonatów

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.

...