if (clickedAnswer == cities.currentState.capital) {
должно быть
if (clickedAnswer == cities[currentState].capital) {
, но ваша собственность в нижнем регистре и currentState
пишется с большой буквы, поэтому вместо этого должно быть
if (clickedAnswer == cities[currentState.toLowerCase()].capital) {
, поскольку currentState
свойство в объекте cities
, но вместо этого вам нужно имя свойства, которое равно значению currentState
.
Хорошо, поскольку у вас много дублированного кода, я подумал, что вы поможете, поэтому я взял ваше код и рефакторинг это так, я также добавил несколько стилей.
var states = ['Alabama', 'Alaska', 'Arizona'],
cities, currentState;
cities = {
alabama: {
image: 'state-images/alabama.jpg',
capital: 'Montgomery',
options: ['Tuscaloosa', 'Montgomery', 'Birmingham', 'Huntsville']
},
alaska: {
image: 'state-images/alaska.jpg',
capital: 'Juneau',
options: ['Anchorage', 'Fairbanks', 'Juneau', 'Nome']
},
arizona: {
image: 'state-images/arizona.jpg',
capital: 'Phoenix',
options: ['Tuscon', 'Scottsdale', 'Yuma', 'Phoenix']
}
}
currentState = states[Math.floor(Math.random() * states.length)];
function getState() {
document.getElementById('activeState').innerHTML = currentState;
document.querySelector(".options").innerHTML = `
${cities[currentState.toLowerCase()].options.map(function(opt) {
return `<button class="choice">${opt}</button>`
}).join("")}
`;
}
getState();
document.querySelector(".options").onclick = function(e) {
if(e.target.className !== "choice") {
return;
}
if(e.target.textContent === cities[currentState.toLowerCase()].capital) {
e.target.style.background = "green";
}else {
e.target.style.background = "red";
}
};
.choice {
display: block;
width: 280px;
height: 40px;
cursor: pointer;
border-radius: 10px;
}
.container {
width: 300px;
background-color: lightgreen;
color: white;
font: bold 15px monospace;
display: flex;
justify-content: center;
flex-wrap: wrap;
padding: 10px;
border-radius: 5px;
box-shadow: 2px 2px #ccc;
}
<div class="container">
<div class="question">
<p>What is the Capital of <span id='activeState'></span>?</p>
</div>
<div class="state-image">
<img id='stateImage' src="State-images/alabama.jpg" alt="">
</div>
<div class="options"></div>
</div>
И теперь вы можете разрабатывать поверх моего кода, если хотите, счастливого кодирования!