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

JavaScript TypeError: null has no properties

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
166 wizyt
pytanie zadane 14 listopada 2016 w JavaScript przez aspoka Mądrala (5,290 p.)

Witam, zaczynam się uczyć java scriptów, więc postanioowiłem napisać przeglądarkowe nim:

<!DOCTYPE html>
<html lang="pl">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<title>NIM ONLINE</title>
		<link rel="stylesheet" href="_style/html5reset-1.6.1.css">
		<link rel="stylesheet" href="_style/screen.css">
		
		<link href="https://fonts.googleapis.com/css?family=Black+Ops+One|Roboto" rel="stylesheet"> 
	</head>
	
	<script>
		
		var a, b, c, d;
		
		function zero()
		{
			document.getElementById("1").innerHTML = null;
			document.getElementById("2").innerHTML = null;
			document.getElementById("3").innerHTML = null;
			a=0; b=0; c=0; d=0;
		}
	
		function howTo()
		{
			
			zero();
			document.getElementById("game").style.display =  'none';
			document.getElementById("about").style.display =  'none';
			document.getElementById("zasady").style.display =  'block';
		}
		
		function about()
		{
			zero();
			document.getElementById("game").style.display =  'none';
			document.getElementById("zasady").style.display =  'none';
			document.getElementById("about").style.display =  'block';
		}
		
		function start()
		{
			zero();
			document.getElementById("zasady").style.display =  'none';
			document.getElementById("about").style.display =  'none';
			document.getElementById("game").style.display =  'block';
			
			a = Math.floor((Math.random() * 12) + 1);
			b = Math.floor((Math.random() * 12) + 1);
			c = Math.floor((Math.random() * 12) + 1);
			
			for(var i=0; i<a; i++)	document.getElementById("1").innerHTML += '<img src="_gfx/rock.png" />';
			for(var i=0; i<b; i++)	document.getElementById("2").innerHTML += '<img src="_gfx/rock.png" />';
			for(var i=0; i<c; i++)	document.getElementById("3").innerHTML += '<img src="_gfx/rock.png" />';
		}
		
		function get1()
		{
			if( (d == 0)||(d==1) )
			{
				d=1;
				a--;
				document.getElementById("1").innerHTML = null;
				for(var i=0; i<a; i++)	document.getElementById("1").innerHTML += '<img src="_gfx/rock.png" />';
			}
		}
		
		function get2()
		{
			if( (d == 0)||(d==2) )
			{
				d=2;
				b--;
				document.getElementById("2").innerHTML = null;
				for(var i=0; i<b; i++)	document.getElementById("2").innerHTML += '<img src="_gfx/rock.png" />';
			}
		}
		
		function get3()
		{
			if( (d == 0)||(d==3) )
			{
				d=3;
				c--;
				document.getElementById("3").innerHTML = null;
				for(var i=0; i<c; i++)	document.getElementById("3").innerHTML += '<img src="_gfx/rock.png" />';
			}
		}
	</script>

	<body>
		<h1>NIM ONLINE</h1>
		<section>
			<ul>
				<li><button onclick="start();">Nowa gra</button></li>
				<li><button onclick="howTo();">Jak grać?</button></li>
				<li><button onclick="about();">O programie</button></li>
			</ul>	
		</section>
		
		<section id="content">
			<p id="zasady">Jest to chińska dwuosobowa gra. Polega na wykonywaniu ruchów na przemian przez graczy. Każde posunięcie w tej grze polega na zmianie konfiguracji kmieni stole, przy czym dopuszczalne są tylko pewne zmiany po wykonaniu ruchu kamieni musi być mniej niż przedtem, ale tylko na jednym stosie liczba kamieni może się zmienić.  W jednym ruchu należy wybrać jeden z stosów i usunąć z niego dowolną liczbę kamieni. Trzeba usunąć przynajmniej jeden kamień, ale można zabrać nawet wszystkie. Wygrywa ten kto usunie ostatni kamień.</p>
			<p id="about">Strona wykonana przez Zero!<br>Wszelkie prawa zastrzeżone<br><br>Nic nie można poza graniem :p</p>
			
			
			<div id="game">
				<div id="1" onclick="get1();"></div>
				<div id="2" onclick="get2();></div>
				<div id="3" onclick="get3();></div>
			</div>
		</section>
	</body>
</html>

Niestety po próbie naciśnięcia na przycisk pojawia się komunikat:

TypeError: null has no properties

document.getElementById("2").innerHTML = null;

który odnosi się do linijki 20

Czy ktoś powie mi jak to wyeliminować?

Zgóry dziękuje :D

komentarz 14 listopada 2016 przez Czort Nałogowiec (32,500 p.)
Nie będę się czepiał js. Zwrócę za to uwagę na dwa istotne detale html:

1. Skrypty ładuje się przed zamknięciem znacznika </body>, ostatecznie w <head>, a na pewno nie między <head> i <body>.

2. Id nie powinno się zaczynać od cyfry.

1 odpowiedź

+1 głos
odpowiedź 14 listopada 2016 przez ribeiro Stary wyjadacz (11,440 p.)
wybrane 14 listopada 2016 przez aspoka
 
Najlepsza
                <div id="1" onclick="get1();"></div>
                <div id="2" onclick="get2();></div>
                <div id="3" onclick="get3();></div>

Od div o id = 2 brakuje cudzysłowów.

Podobne pytania

0 głosów
0 odpowiedzi 446 wizyt
0 głosów
1 odpowiedź 1,165 wizyt
0 głosów
2 odpowiedzi 397 wizyt
pytanie zadane 29 marca 2016 w JavaScript przez adojado Początkujący (420 p.)

93,176 zapytań

142,186 odpowiedzi

321,980 komentarzy

62,507 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1637p. - dia-Chann
  2. 1614p. - Łukasz Piwowar
  3. 1599p. - CC PL
  4. 1597p. - Łukasz Eckert
  5. 1572p. - Tomasz Bielak
  6. 1537p. - Łukasz Siedlecki
  7. 1531p. - rucin93
  8. 1509p. - rafalszastok
  9. 1356p. - ssynowiec
  10. 1341p. - Mikbac
  11. 1328p. - Michal Drewniak
  12. 1273p. - Adrian Wieprzkowicz
  13. 1169p. - Grzegorz Aleksander Klementowski
  14. 1155p. - Piotr Aleksandrowicz
  15. 1149p. - Michał Telesz
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...