• 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

0 głosów
269 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 547 wizyt
0 głosów
1 odpowiedź 1,367 wizyt
0 głosów
2 odpowiedzi 507 wizyt
pytanie zadane 29 marca 2016 w JavaScript przez adojado Początkujący (420 p.)

93,759 zapytań

142,716 odpowiedzi

323,364 komentarzy

63,357 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...