Kviz.js:131 Uncaught SyntaxError: Unexpected identifier - Quiz

Hi.
I have a problem. I have a part of a quiz written and now i have to be able to see a questions, when i start it on the web browser, i dont see anything. In the console i see that there is a kviz.js:131 Uncaught SyntaxError: Unexpected identifier. Any solutions?

function postavKviz(){
	const output = [];
	otazky.forEach(
		(momentalniOtazka, cisloOtazky) => {

			const odpovedi = [];
			for (letter in momentalniOtazka.odpovedi){
				odpovedi.push(
					`<label>
					<input type="radio" name="otazka${cisloOtazky}" value="${letter}">
					${letter} :
					${momentalniOtazka.odpovedi[letter]}
					</label>`
					);

			}
			output.push(
				`<div class="otazka"> ${momentalniOtazka.otazka} </div>
				<div class="odpovedi"> ${odpovedi.join('')} </div>`
				);
			}
		);
		quizContainer.innerHTML = output.join('');
}
function ukazVysledky()
{

}
const quizContainer = document.getElementById("kviz");
const resultsContainer = document.getElementById("answers");
const submitButton = document.getElementById("submit")
const otazky = [
	{
		otazka: "Na jaké mocnosti se Československo po 1. světové válce orientovalo?",
		odpovedi:
		{
			a: "Sovětský Svaz, Čína",
			b: "Velká Británie, Francie, USA",
			c: "Německo, Itálie"
		},
		spravnaOdpoved: "b"
	},
	{
		otazka: "Jaké stopy po společném soužití s Československem má Podkarpatská Rus?",
		odpovedi:
		{
			a: "Infrastruktura",
			b: "Jazyk",
			c: "Pamatáky odkazující na Československo"
		},
		spravnaOdpoved: "a"
	},
	{
		otazka: "Jaké státy tvořily Malou dohodu?",
		odpovedi:
		{
			a: "Velká Británie, Francie, Německo",
			b: "Československo, Jugoslávie, Rumunsko",
			c: "USA, Čína, Japonsko"
		},
		spravnaOdpoved: "b"
	},
	{
		otazka: "Na jaké mocnosti se Československo po 1. světové válce orientovalo?",
		odpovedi:
		{
			a: "Sovetský Svaz, Čína",
			b: "Velká Británie, Francie, USA",
			c: "Německo, Itálie"
		},
		spravnaOdpoved: "b"
	},
	{
		otazka: "Jaké komory tvořily za dob první republiky parlament?",
		odpovedi:
		{
			a: "Rada státu, národní zasedání dělnické třídy",
			b: "Senát, rada státu",
			c: "Poslanecká sněmovna, senát"
		},
		spravnaOdpoved: "c"
	},
	{
		otazka: "K čemu sloužilo v dobách prvni republiky Rudolfínum?",
		odpovedi:
		{
			a: "Zasadala zde rada státu",
			b: "Zasedal zde senát",
			c: "Zasedala zde poslanecká sněmovna"
		},
		spravnaOdpoved: "c"
	},
	{
		otazka: "Díku čemu přežil atentát Karel Kramař?",
		odpovedi:
		{
			a: "Střelec ho minul",
			b: "Střelec ho trefil do místa, kde byl chráněn trojím krytím",
			c: "Střelec ho zasáhnul do nohy, ale nebylo to život ohrozující"
		},
		spravnaOdpoved: "b"
	},
	{
		otazka: "Díky čemu je firma Tomáše Baťy tak úspěšná?",
		odpovedi:
		{
			a: "Obuv v té době nikdo jiný nevyráběl",
			b: "Měl mnoho kamarádů, herců, kteří jeho firmu výrazně propagovali",
			c: "Získal velké zkušenosti ve Spojených státech"
		},
		spravnaOdpoved: "c"
	},
	{
		otazka: 'Proč se Osvobozené divadlo nazývá "Osvobozené"?',
		odpovedi:
		{
			a: "Protože se divadlo snaží odpoutat od stereotypu, které v té době v divadlech bylo",
			b: "Protože tam hráli vojáci, kteří bojovali v 1. světové válce",
			c: "Nemá to žádný pádný důvod, slovo osvobozené bylo nejoblíbenější slovo zakladatele Jana Wericha"
		},
		spravnaOdpoved: "a"
	},
	{
		otazka: "Jací bratři stáli za vznikem Barrandova?",
		odpovedi:
		{
			a: "Miloš a Václav Havel",
			b: "Karel a Josef Čapek",
			c: "Tomáš Garrigue a Ludvík Masaryk"
		}
		spravnaOdpoved: "a"
	}
];

	postavKviz();
submitButton.addEventListener('click', ukazVysledky);

You’ve forgotten a comma in the final object in the otazky array.

This:

{
  otazka: "Jací bratři stáli za vznikem Barrandova?",
  odpovedi:
  {
    a: "Miloš a Václav Havel",
    b: "Karel a Josef Čapek",
    c: "Tomáš Garrigue a Ludvík Masaryk"
  }
  spravnaOdpoved: "a"
}

should be:

{
  otazka: "Jací bratři stáli za vznikem Barrandova?",
  odpovedi:
  {
    a: "Miloš a Václav Havel",
    b: "Karel a Josef Čapek",
    c: "Tomáš Garrigue a Ludvík Masaryk"
  },
  spravnaOdpoved: "a"
}

Using a linter would have identified this immediately :slight_smile:

1 Like

Thank you. This problem is solved. But now the problem is moved to row 23. Now the error looks kviz.js:23 Uncaught TypeError: Cannot set property ‘innerHTML’ of null
at postavKviz. Do you know how to solve it too? :smiley:

I guess this is the line causing the error.

quizContainer.innerHTML = output.join('');

quizContainer is defined thus:

const quizContainer = document.getElementById("kviz");

Do you have an element with an ID of kviz on the page?

Yes i have. That problem is solved already.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.