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

question-closed Zmienna Javascript

VPS Starter Arubacloud
+1 głos
325 wizyt
pytanie zadane 14 maja 2021 w JavaScript przez Doge Gaduła (3,420 p.)
zamknięte 14 maja 2021 przez Doge

Witam, mam następujący problem:

var haslo = "";
var zakreskowane = "";
var nietrafione = 0;
var losowe = Math.floor(Math.random()*10)+1;
function przypisanie()
{
	var zycia = document.getElementById("ilosc_zyc").value;
	document.getElementById("stopka").innerHTML = zycia;
}

switch(losowe)
{
	case 1:
	{
		haslo = "JEDEN";
		break;
	}
	case 2:
	{
		haslo = "DWA";
		break;
	}
	case 3:
	{
		haslo = "TRZY";
		break;
	}
	case 4:
	{
		haslo = "CZTERY";
		break;
	}
	case 5:
	{
		haslo = "PIĘĆ";
		break;
	}
	case 6:
	{
		haslo = "SZEŚĆ";
		break;
	}
	case 7:
	{
		haslo = "SIEDEM";
		break;
	}
	case 8:
	{
		haslo = "OSIEM";
		break;
	}
	case 9:
	{
		haslo = "DZIEWIĘĆ";
		break;
	}
	case 10:
	{
		haslo = "DZIESIĘĆ";
		break;
	}
}
var dlugosc = haslo.length;

for(i=0;i<dlugosc;i++)
{
	if(haslo.charAt(i)==" ")
	{
		zakreskowane += " ";
	}
	else
	{
		zakreskowane += "_";
	}
}

function wypisz_haslo()
{
	document.getElementById("haslo").innerHTML = zakreskowane;
}

var litery = new Array(35);
litery[0] = "A";
litery[1] = "Ą";
litery[2] = "B";
litery[3] = "C";
litery[4] = "Ć";
litery[5] = "D";
litery[6] = "E";
litery[7] = "Ę";
litery[8] = "F";
litery[9] = "G";
litery[10] = "H";
litery[11] = "I";
litery[12] = "J";
litery[13] = "K";
litery[14] = "L";
litery[15] = "Ł";
litery[16] = "M";
litery[17] = "N";
litery[18] = "Ń";
litery[19] = "O";
litery[20] = "Ó";
litery[21] = "P";
litery[22] = "Q";
litery[23] = "R";
litery[24] = "S";
litery[25] = "Ś";
litery[26] = "T";
litery[27] = "U";
litery[28] = "W";
litery[29] = "V";
litery[30] = "X";
litery[31] = "Y";
litery[32] = "Z";
litery[33] = "Ż";
litery[34] = "Ź";


window.onload = start;
function start()
{
	var tresc_diva = "";
	for(i=0;i<35;i++)
	{
		tresc_diva += '<div id="l'+i+'" class="litera" onclick="sprawdz('+i+')">'+litery[i]+'</div>';
		if((i+1)%7==0)
		{
			tresc_diva += '<div style="clear:both;"></div>'
		}
	}
	document.getElementById("alfabet").innerHTML = tresc_diva;
	wypisz_haslo();
}

String.prototype.ustawZnak = function(miejsce, znak) //ustawZnak - nazwa funkcji
{
	if(miejsce>this.length-1)
	{
		return this.toString();
	}
	else
	{
		return this.substr(0, miejsce)+znak+this.substr(miejsce+1)
	}
}

function sprawdz(nr)
{
	var trafione = false;
	for(i=0;i<dlugosc;i++)
	{
		if(haslo.charAt(i) == litery[nr]) //jeżeli haslo[i] == wybrana litera
		{
			zakreskowane = zakreskowane.ustawZnak(i,litery[nr]); //podstawienie znaku za pomocą funkcji ustawZnak
			trafione = true;
		}
	}
	
	if(trafione == true) //jeżeli trafiono znak
	{
		var element = "l"+nr;
		document.getElementById(element).style.background = "#003300";
		document.getElementById(element).style.color = "#00C000";
		document.getElementById(element).style.border = "solid 3px #00C000";
		document.getElementById(element).style.cursor = "default";
		wypisz_haslo();
	}
	else //jeżeli nie trafiono znaku
	{
		var element = "l"+nr;
		document.getElementById(element).style.background = "#330000";
		document.getElementById(element).style.color = "#C00000";
		document.getElementById(element).style.border = "3px solid #330000";
		document.getElementById(element).style.cursor = "default";
		document.getElementById(element).setAttribute("onclick",";");
		nietrafione++;
		zycia--; //W TYM MIEJSCU NIE ODEJMUJE ŻYĆ
		document.getElementById("stopka").innerHTML = zycia;
		if(zycia == 0) //jeżeli nie trafiono dana ilosc razy
		{
			document.getElementById("alfabet").innerHTML = 'Przegrałeś.</br>' + '<span class="reset" onclick="location.reload()">Zagraj jeszcze raz</span>';
		}
		else //jeżeli nie trafiono, ale mniej niż 6 razy
		{
			var obraz = "img/"+nietrafione+".jpg";
			document.getElementById("szubienica").innerHTML = '<img src="'+obraz+'" width="400" height="400"/>';
		}
	}
	if(zakreskowane==haslo) //wygrana
	{
		document.getElementById("alfabet").innerHTML = 'Wygrałeś.</br>' + '<span class="reset" onclick="location.reload()">Zagraj jeszcze raz</span>';
	}
}

Na dole kodu znajduje się dekrementacja zmiennej "zycia", lecz nie działa. Dlaczego tak się dzieje?

komentarz zamknięcia: Już znalazłem rozwiązanie, zmienna była utworzona w funkcji przypisanie, przez co była lokalna, po utworzeniu zmiennej globalnej, wszystko działa.
1
komentarz 15 maja 2021 przez VBService Ekspert (255,440 p.)

Propozycja dla switch-a.  wink

let haslo = "";
. . .
const losowe = Math.floor(Math.random()*10)+1;

. . .
//              0       1       2     ... itd.
const hasla = [null, 'JEDEN', 'DWA', 'TRZY', 'CZTERY', 'PIĘĆ',
                     'SZEŚĆ', 'SIEDEM', 'OSIEM', 'DZIEWIĘĆ', 'DZIESIĘĆ'];
haslo = hasla[losowe];

. . .

 

1 odpowiedź

+1 głos
odpowiedź 14 maja 2021 przez Doge Gaduła (3,420 p.)
Już znalazłem rozwiązanie, zmienna była utworzona w funkcji przypisanie, przez co była lokalna, po utworzeniu zmiennej globalnej, wszystko działa.

Podobne pytania

0 głosów
0 odpowiedzi 162 wizyt
pytanie zadane 2 kwietnia 2019 w JavaScript przez eric19972 Użytkownik (590 p.)
0 głosów
1 odpowiedź 1,110 wizyt
pytanie zadane 19 października 2017 w JavaScript przez lastavenger Obywatel (1,060 p.)
0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 2 sierpnia 2017 w JavaScript przez SzymonSmith Użytkownik (870 p.)

92,839 zapytań

141,780 odpowiedzi

320,855 komentarzy

62,171 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

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!

...