HTML5 localStorage

MoH7aH4o

Registered
Здравейте, имам следния код
Код:
<!DOCTYPE html>

<html>
	<head>
	<meta charset="utf-8" />
	<link rel="stylesheet" type="text/css" href="style2.css"/>
		<title>HTML5 - базирана образователна игра</title>
		
		<script>
			var Game = (function() {
			/*------------------------------------------------------------
				| Тези променливи са скрити извън методите на Game
				| С други думи - това са private променливи,
				| достъпни само от методите на Game (play, load, start)
				+-----------------------------------------------------------*/
				var
					lastSelected = {}, // обект, който съхранява последната избрана кутийка с въпрос
					sounds = {}, // обект, който съхранява всички звуци, които искаме да ползваме
					correct = 0, // брой на верните отговори
					wrong = 0, // брой на грешните отговори
					max = 5, // максимален брой верни отговори = броя на картинките
					startTimer = new Date(), // Стартираме таймер в началото на играта
					endTimer; // Променлива, която ще инициализираме в края на играта,
					          // за да сравним времената

			 // Функция, която проверява дали item е пропърти на обекта object, а не част от прототипната му верига
					hasOwnProperty = function( object, item ) {
						return Object.prototype.hasOwnProperty.call( object, item );
					};

				return {
				// Метод, който зарежда избраните звуци в sounds променливата
					'load': function ( list ) {
						var i;

						for( i in list ) {
							if( hasOwnProperty( list, i ) ) {
								sounds[i] = new Audio();
								sounds[i].src = list[i];
							}
						}
					},
					// Метод, който инициализира играта
					'start': function () {
					// Добавяме събитие onclick на документа
						document.onclick = function ( e ) {
							var
							// това е елементът, върху който е кликнато
								target = e ? e.target : window.event.srcElement,
								// това е атрибута data-animal на елемента, който е кликнат
								animal = target.getAttribute( 'data-animal' ),
								// това е атрибута data-type на елемента, който е кликнат
								type = target.getAttribute( 'data-type' ),
								message = '';
								
								/*--------------------------------------------------
							| В случай, че е кликнато на някое от нашите
							| изображения или кутия с въпрос type ще е различен
							| от null, и ще има стойност slot или pic
							+-------------------------------------------------*/

							switch( type ) {
							// В случай, че е кликнато на кутия с въпрос
								case 'slot':
								
								// Инициализираме обекта lastSelected с две пропъртита:
									// - animal: името на животното
									// - target: инстанция на изображението, върху, което е кликнато

									lastSelected = {
										'animal': animal,
										'target': target
									};
									// Изпълняваме звук с име "animal" (което вземаме от
									// data-animal атрибута) на кутията с въпрос
									Game.play( animal );
								break;

								case 'pic':
									if( hasOwnProperty( lastSelected, 'animal' ) ) {
										if( lastSelected.animal == animal ) {
											lastSelected.target.removeAttribute( 'data-type' );
											lastSelected.target.style.opacity = .3;
											lastSelected.target.src = target.src;
											target.style.visibility = 'hidden';
											Game.play( 'correct' );

											// Ако отговорът е правилен - инкрементираме променливата за верни отговори
											correct++;
										}
										else {
											Game.play( 'wrong' );
											// Ако отговорът е грешен - инкрементираме променливата за грешни отговори
											wrong++;
										}

										// Ако потребителят е познал всички картинки - изписваме резултата
										if( correct == max ) {
											endTimer = new Date();

											// Разликата между двата таймера в милисекунди
											var diff = endTimer.getTime() - startTimer.getTime();
											// Обръщаме я в секунди
											diff = diff / 1000;

											message = "<br><br><br><br>Край на играта!<br><br>";
											message += 'Верни: ' + correct + "<br>";
											message += 'Грешни: ' + wrong + "<br>";
											message += 'Време: ' + diff + " секунди<br><br>";
											message += 'Изпълнение: ';
											
											// Съотношението на верните отговори към всички отговори в проценти
											// Това никога няма да е 0, понеже играта свършва след като всички
											// картинки са били познати. Така че отговорът може само да клони към 0
											// т.е. ако имаш безкраен брой грешни отговори, съотношението 5 / inf
											// ще клони към 0, но винаги ще е по-голямо, защото в крайна сметка
											// си познал всичко
											message += Math.round( 100 * ( correct / ( correct + wrong ) ) ) + '%';
												
											// Съобщението за край на играта замества целия HTML в тага "container"
											// Ако искаш да го направиш по различен начин, например да запазиш
											// някои елементи на играта и да махнеш само животните - можеш
											// да премахнеш бутоните за звуци и картинките с removeChild
											// и на тяхно място да покажеш нов (досега скрит) балон с текста.
											// За да вмъкнеш текста в него - ползвай долния ред. За да го покажеш,
											// ползвай нещо като document.getElem...yId('balloon').style.display = 'block';
											// В стиловете можеш да му зададеш вече размери, позиция и т.н.
											document.getElementById( 'container' ).innerHTML = message;
										}
									}
								break;
							}
						};
					},
					// Метод, който изпълнява звук, от заредените с load метода
					// Аргумента animal ползваме, за да разберем кой звук от списъка да изпълним
					'play': function ( animal ) {
						var i;
						// Обхождаме свойствата/ппропъртитата на обекта sounds
						// За всяко свойство:
						for( i in sounds ) {
						// Проверяваме дали текущото свойство е част от обекта, а не от прототипната му верига
							if( hasOwnProperty( sounds, i ) ) {
								// ако звукът се изпълнява в момента - слагаме го на пауза
								sounds[i].pause();
								
								// Ако аргумента animal и текущото свойство съвпадат
								if( i == animal ) {
								// Връщаме показалеца на звука в началото на аудио записа
									sounds[i].currentTime = 0;
									// и го изпълняваме
									sounds[i].play();
								}
							}
						}
					}
				};
			})();
			
			
			
		</script>
		
		
		<style>
	body{
	font-family:Helvetica,Arial, sans-serif;
	font-size:16px;
	background:url(index-backgrount1.jpg) no-repeat top center;
	background-size: cover;
	}
	
	
	canvas { border: 2px dotted black; }
		
		img {
        -moz-border-radius: 15px; /* FF 1+ */
        -webkit-border-radius: 15px; /* Safari 3+, Chrome */
        border-radius: 15px; /* Opera 10.5, IE 9 */
}

			img[data-type] { cursor: pointer; }
		</style>
		
	</head>

	<body>
		<div class="menu-nav">
			 <ul>
			<li><a href="index.html">Начало</a></li>
			<li><a href="game.html">Игра със звуци на животни</a></li>
			<li><a href="poznai_dumata.html">Познай думата от снимката</a>	</li>
			<li><a href="Podredi_cvetovete.html">Подреди цветовете</a></li>
			<li><a href="paint.html">Рисуване</a></li>
			 </ul>
			  
			</div>
			
		<div id="container">
			<br><br><br><center><h1> Познай, на кое животно е съответния звук. </h1></center><br>
			

			
			<a href=""onclick="prozorec()"><img style='position:absolute;top: 256;right: 1060px;'src="images/frgf.png"> </a> 
			
			
			
			<p>
				<img style='position:absolute;top: 256px;right: 300px;' src="images/bird.jpg" alt="Птица" data-type="pic" data-animal="bird" />
				<img style='position:absolute;top: 270px;right: 550px;' src="images/frog.jpg" alt="Жаба" data-type="pic" data-animal="frog" />
				<img style='position:absolute;top: 430px;right: 360px;' src="images/goat.jpg" alt="Коза" data-type="pic" data-animal="goat" />
				<img style='position:absolute;top: 430px;right: 730px;' src="images/lion.jpg" alt="Лъв" data-type="pic" data-animal="lion" />
				<img style='position:absolute;top: 256px;right: 790px;' src="images/rooster.jpg" alt="Петел" data-type="pic" data-animal="rooster" />
			</p>

			<p>
				<img style='position:absolute;top: 650px;right: 940px;' src="images/zvuk1.jpg" alt="Звук 1" data-type="slot" data-animal="lion" />
				<img style='position:absolute;top: 650px;right: 740px;' src="images/zvuk2.jpg" alt="Звук 2" data-type="slot" data-animal="bird" />
				<img style='position:absolute;top: 650px;right: 540px;' src="images/zvuk3.jpg" alt="Звук 3" data-type="slot" data-animal="frog" />
				<img style='position:absolute;top: 650px;right: 340px;' src="images/zvuk4.jpg" alt="Звук 4" data-type="slot" data-animal="rooster" />
				<img style='position:absolute;top: 650px;right: 140px;' src="images/zvuk5.jpg" alt="Звук 5" data-type="slot" data-animal="goat" />
			</p>
			
		</div>

		<script>
			Game.load( {
			// Зареждаме звуците, които са ни необходими,
			// включително тези за правилен и грешен отговор
				'correct': 'sounds/correct.ogg',
				'wrong': 'sounds/wrong.ogg',
				'rooster': 'sounds/rooster.ogg',
				'bird': 'sounds/bird.ogg',
				'frog': 'sounds/frog.ogg',
				'lion': 'sounds/lion.ogg',
				'goat': 'sounds/goat.ogg'
				
			} );
			// Стартираме играта
			Game.start();
			
		function prozorec()
			{
			//Правим прозореца
			var prozorec = window.open("", "", "top=50, left=50, width=260, height=200");

			//HTML в прозореца
			prozorec.document.open();

			//HTML съдържание
			prozorec.document.write("<title>ПОМОЩ</title>");
			prozorec.document.write("Изскачащ прозорец<br/>");
			prozorec.document.write("<textare rows=10 cols=20></textarea>");
			//HTML прозорец затваряне
			prozorec.document.close();
			}
			
		</script>
		
	</body>
</html>

Искам резултата, който ми излиза накрая да се съхраняват данните в localStorage, обаче не знам, как да го направя. По принцип трябва и снимките или реда на снимките(не знам, как е по правилно) да се запазват в localStorage, но и това не знам, как трябва да стане. Ако може някой да помогне, ще съм му много благодарен.
 
http://www.w3schools.com/html/html5_webstorage.asp

[js]
if(typeof(Storage)!=="undefined") {
localStorage.correct=correct;
localStorage.wrong=wrong;
//показване
document.getElementById("result").innerText="Correct: " + localStorage.correct + " Wrong: " + localStorage.wrong;
}else {
не се подържа ...
}[/js]

Използвай canvas и JS го пиши в различни файлове, от index-а. Доста по-четимо ще стане :?:
 

Back
Горе