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

Mały problem z .toString()

Object Storage Arubacloud
+1 głos
307 wizyt
pytanie zadane 26 kwietnia 2016 w JavaScript przez Codeboy Stary wyjadacz (12,120 p.)
edycja 26 kwietnia 2016 przez Codeboy
Dlaczego nie wykonuje mi poprawnie skryptu? Jezeli dla a przypisze 
liczbe w skrypcie dziala, jezeli proboje odczytac ja z 
inputa zwracam mi te same wyniki wszedzie :<.

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

<head>
	<meta charset="utf-8"/>
	
	<script type="text/javascript">
		
		function konwersja()
		{
		a=document.getElementById("dzies").value;
		
		if (a>0) {
		document.getElementById("dwuj").value=a.toString(2);
		document.getElementById("osem").value=a.toString(8);
		document.getElementById("szes").value=a.toString(16);
		}
		
		
		}
		
	</script>

</head>

<body>
	<form>
		<p>System dziesiętny</p>
		<input id="dzies" type="text"/>
		<p>System dwójkowy</p>
		<input id="dwuj" type="text"/>
		<p>System ósemkowy</p>
		<input id="osem" type="text"/>
		<p>System szesnastkowy</p>
		<input id="szes" type="text"/>
		</br></br>
		<input id="dzies" type="button" value="wykonaj" onclick="konwersja();"/>
	</form>
	<div id="wynik"></div>
</body>

</html>

 

komentarz 26 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)
  • zawsze deklaruj zmienne słówkiem var - unikaj tworzenia zmiennych globalnych, zwłaszcza przypadkowo
  • masz 2 elementy HTML o takim samym ID "dzies" (pierwszy i ostatni input)
  • jeśli przycisk nie wysyła formularza, to zamiast <input type="button"> używaj <button></button>
  • zamiast onclick w HTML stosuj addEventListener w JS (było o tym wiele razy na forum)
  • skrypt JS z <head> przenieś na koniec <body>

Odpowiedź na pytanie już otrzymałeś (od kubaapk) - element.value zwraca Ci dane w formie string, więc musisz je przekonwertować na number, aby móc je potem zamieniać na bin/hex/dec (czy co tam chcesz). 

komentarz 26 kwietnia 2016 przez Codeboy Stary wyjadacz (12,120 p.)
dzieki wielkie za rady, to jest kod roboczym, kopiowałem linijki i stad te powtórzenia, wszystkie punkty rozumiem, poza ostatnim. Dlaczego skrypt przenieść do body?
komentarz 26 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)

Dlaczego skrypt przenieść do body?

Po pierwsze strona będzie ładować się szybciej - cała zawartość body, czyli to co widzisz zostanie załadowana (pokazane w przeglądarce) a na końcu (przed zamknięciem </body>) dopiero uruchomi się JS. Jeśli umeiszczasz skrypty JS w <head>, to strona ładuje się dłużej (zwłaszcza przy dużych skryptach), bo zamiast renderować elementy HTML, to ładuje JS.

Po drugie, jeśli w JS modyfikujesz elementy DOM albo chociażby uzyskujesz do nich dostęp (document.getElementById(), document.querySelectorAll() etc.), to ujrzysz w konsoli błędy typu "cannot read property of undefined". Jeśli natomiast umieścisz skrypty JS na końcu <body>, to cała strona zdąży się załadować i już JS będzie miał dostęp do drzewka DOM.

O tym też było na forum mówione, poszukaj.

komentarz 26 kwietnia 2016 przez Codeboy Stary wyjadacz (12,120 p.)
Dziękuje za poświęcony czas!

1 odpowiedź

+2 głosów
odpowiedź 26 kwietnia 2016 przez kubaapk Nałogowiec (44,270 p.)
wybrane 26 kwietnia 2016 przez Codeboy
 
Najlepsza
a=document.getElementById("dzies").value;

Przez .value zwraca Ci string. Musisz sparsować na int. -> https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/parseInt

 

Próbuj debugować kod przez console.log. Wyświetl sobie console.log(a) i zobacz co dostaniesz ;-)

komentarz 26 kwietnia 2016 przez Codeboy Stary wyjadacz (12,120 p.)

dodałem tylko 1 linie pod deklaracje zmiennej a, o to Ci chodziło? czy w ogóle można to jakoś skrócić? Działać działa, wielkie dzięki!

a=parseInt(a, 10);

1
komentarz 26 kwietnia 2016 przez kubaapk Nałogowiec (44,270 p.)

Możesz też to zapisać tak

a = parseInt(document.getElementById("dzies").value);
komentarz 26 kwietnia 2016 przez Codeboy Stary wyjadacz (12,120 p.)
dzieki, o to mi chodziło!

Podobne pytania

0 głosów
2 odpowiedzi 128 wizyt
pytanie zadane 21 lipca 2017 w Java przez LukasHardwares Początkujący (490 p.)
0 głosów
1 odpowiedź 602 wizyt
pytanie zadane 19 marca 2016 w Java przez Mar Cin Dyskutant (8,900 p.)
0 głosów
1 odpowiedź 94 wizyt
pytanie zadane 19 sierpnia 2021 w C# przez Pawel1995 Gaduła (3,810 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...