Tworzę wisielca z 3 kursy JS Pana M. Zelenty. Nie był bym sobą, jak bym nie zatrzymywał co chwilę filmiku i próbował sam zrobić, więc kod się troszkę różni od tego co jest w kursie.
W każdym razie problem polega na tym, że po odpaleniu w przeglądarce kodu skrypt nie działa poprawnie i wyskakuje błąd " TypeError: document.getElementById(...) is null " jest to przy funkcji "sprawdz();" skopiowałem nawet gotowca funkcji z paczki od Pana M. Zelenty.
Proszę o pomoc, bo kompletnie nie mogę dostrzec co jest powodem błędu. Rozumiem, że cały ten zapis zwraca wartość false, ale nie rozumiem z jakiej przyczyny.
Niżej załączam kod i z góry dziękuję za pomoc :-)
var haslo = "Bez pracy nie ma kołaczy";
haslo = haslo.toUpperCase(); //zamiana na duże litery
var dlugosc = haslo.length;
var ile_skuch = 0;
var haslo1 = "";
for ( i=0; i<dlugosc; i++){
if(haslo.charAt(i)==" ") haslo1= haslo1 + " "; //charAt(...) -- tylko do odczytu znaku
else haslo1 = haslo1 + "-";
}
function wypisz_haslo(){
document.getElementById("board").innerHTML = haslo1;
}
window.onload = start; //najwiekszy kozak z wybrzeża || przezwisko
var litery = new Array(35); //tworzenie tablicy
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] = "V";
litery[29] = "W";
litery[30] = "X";
litery[31] = "Y";
litery[32] = "Z";
litery[33] = "Ż";
litery[34] = "Ź";
function start(){
var tresc_diva = "";
for( i=0; i<35; i++){
var element = "lit" + i;
tresc_diva = tresc_diva + '<div class="letter"onclick="sprawdz('+i+')" id = " '+element+' ">'+litery[i] +'</div>'
if( ( i+1 )%7==0) tresc_diva = tresc_diva + '<div style="clear: both;"></div>'
}
document.getElementById("alphabet").innerHTML = tresc_diva;
wypisz_haslo();
}
String.prototype.ustawZnak = function(miejsce, znak){
if(miejsce > this.length - 1) return this.toString(); // .toString(); -- konwertowanie na napis (tu akurat chcemy mieć pewność, że to nadal jest napis )
else return this.substr(0, miejsce) + znak + this.substr(miejsce+1); // .substr(x,y); -- wyjmowanie || wyjmij od x tyle znaków, ile wskazuje y
}
// alert(nr); // alert(...) -- test
function sprawdz(nr)
{
var trafiona = false;
for(i=0; i<dlugosc; i++)
{
if (haslo.charAt(i) == litery[nr])
{
haslo1 = haslo1.ustawZnak(i,litery[nr]);
trafiona = true;
}
}
if(trafiona == true)
{
var element = "lit" + nr;
document.getElementById(element).style.background = "#003300";
document.getElementById(element).style.color = "#00C000";
document.getElementById(element).style.border = "3px solid #00C000";
document.getElementById(element).style.cursor = "default";
wypisz_haslo();
}
else
{
var element = "lit" + nr;
document.getElementById(element).style.background = "#330000";
document.getElementById(element).style.color = "#C00000";
document.getElementById(element).style.border = "3px solid #C00000";
document.getElementById(element).style.cursor = "default";
document.getElementById(element).setAttribute("onclick",";");// .setAttribute -- ustawianie atrybutu || zamiast czego co zrobic (... , ...)
//skucha
ile_skuch++;
var obraz = "img/s"+ ile_skuch + ".jpg";
document.getElementById("szubienica").innerHTML = '<img src="'+obraz+'" alt="" />';
}
wypisz_haslo();
}