Я пытаюсь создать игру, и первым шагом в ней является выбор персонажа с помощью html-select.Когда пользователь выбирает опцию через функцию (включая «переключатель»), ранее определенному объекту присваиваются его значения, и я могу даже отобразить их внутри функции, но, когда я пытаюсь сделать то же самое вне функции, значенияне обновлять должным образом.Вот код:
<html>
<head>
<script>
var selectedPlayer = {
level: 0,
gold: 1,
expWorth: 0,
classLevel: 0,
experience: 0,
totalHealth: 0,
totalEnergy: 0,
totalAttack: 0,
totalDefense: 0,
totalSpeed: 0,
totalFatigue: 0
};
function switchingCharacter() {
switch ($("#mySelect option:selected").val()) {
case "heracles":
$("#demo2").text("You selected Heracles");
selectedPlayer = {
level: 2,
gold: 2,
expWorth: 0,
classLevel: 0,
experience: 0,
totalHealth: 35,
totalEnergy: 10,
totalAttack: 51,
totalDefense: 50,
totalSpeed: 2,
totalFatigue: 2
};
break;
case "ra":
$("#demo2").text("You selected Ra");
selectedPlayer = {
level: 1,
gold: 1,
expWorth: 0,
classLevel: 0,
experience: 0,
totalHealth: 180,
totalEnergy: 10,
totalAttack: 13,
totalDefense: 8,
totalSpeed: 2,
totalFatigue: 2
};
break;
default:
$("#demo2").text("You didn't select any character");
}
$("#hp").text("HP: " + selectedPlayer.totalHealth);
$("#attack").text("Attack: " + selectedPlayer.totalAttack);
$("#defense").text("Defense: " + selectedPlayer.totalDefense);
$("#energy").text("Energy: " + selectedPlayer.totalEnergy);
$("#speed").text("Speed: " + selectedPlayer.totalSpeed);
$("#fatigue").text("Fatigue: " + selectedPlayer.totalFatigue);
$("#gold").text("Gold: " + selectedPlayer.gold);
}
function displaystats() {
$("#level").text("Level: " + selectedPlayer.level);
}
//Below is something added in 2nd edition
var testing = selectedPlayer.fatigue;
function other() {
$("#log").text(Math.floor(testing));
}
other();
console.log(testing);
</script>
<script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<p>Welcome to Anime Colisseum's System Calculator.</p>
<p>Select your character below:</p>
<form>
<select id="mySelect" onchange="switchingCharacter()">
<option value="heracles">Heracles</option>
<option value="ra">Ra</option>
</select>
</form>
<p id="demo" class=form-control></p>
<p id="demo2" class=form-control></p>
</body>
<p id=hp></p>
<p id=energy></p>
<p id=attack></p>
<p id=defense></p>
<p id=speed></p>
<p id=blocks></p>
<p id=fatigue></p>
<p id=gold></p>
<p id=level></p>
<p id=log></p> <!-- 2edition --->
</html>
Я ожидал, что элемент p с "id = level" будет изменен, так же, как остальные внутри switchCharacter () были ...
Iдовольно плохо знаком с программированием, поэтому весьма вероятно, что я, возможно, упускаю из виду простую, но важную деталь.Заранее спасибо.
Теперь отредактировано: благодаря ответу, предоставленному Златко, теперь я вижу, что забыл вызвать функцию обновления статистики внутри switchingCharacter()
.Тем не менее, проблема остается, не похоже, что значения, которые я написал в switchCharacters (), должным образом хранятся в объекте selectedCharacter, var testing = selectedPlayer.fatigue; function other() { $("#log").text(Math.floor(testing)); } other(); console.log(testing);
При добавлении этого, например, консоль отображает "undefined"