#javascript #jquery
#javascript #jquery
Вопрос:
Пользователь вводит различные записи в поля. Затем, когда он нажимает кнопку create, я написал функциональный тест () для создания объекта hero с записями пользователей. Но когда я пытаюсь получить доступ к объекту hero с помощью кнопки проверить вашего героя, я получаю
Главный символ (=имя индивидуализированного объекта-героя) не определен
Что я делаю не так? Как мне извлечь объект mainCharacter из функции test()?
Я пробовал множество операторов возврата объекта mainCharacter в функции test().
function Hero(name, power, endurance, lives, workedout) {
this.name = name;
this.power = power;
this.endurance = endurance;
this.lives = lives;
this.workedout = workedout;
}
// Create the hero function; takes the values from the players entries except for workedout;
function test() {
var name1 = $("#heroName").val();
var power1 = document.getElementById("heroPower").value;
var endurance1 = $("#heroEndurance").val();
var lives1 = document.getElementById("heroLives").value;
var workedout1 = false;
// CHECK IF THERE`s a STRING IN HERO NAME
switch (isNaN(name1) || parseInt(name1)) {
case true:
alert("Everything ok");
break;
default:
alert("Please enter a name");
break;
}
var mainCharacter = new Hero(name1, power1, endurance1, lives1, workedout1);
alert("His name is " mainCharacter.name " his power is " mainCharacter.power " his endurance is " mainCharacter.endurance " and his lives are " mainCharacter.lives);
return mainCharacter;
};
function alertHero() {
alert(mainCharacter.lives);
}
<h1>Create your hero</h1>
Your hero`s name <input type="text" name="name" id="heroName"> Your hero`s power <input type="number" name="power" id="heroPower"> Your hero`s endurance <input type="number" name="endurance" id="heroEndurance"> Your hero`s lives <input type="number" name="lives"
id="heroLives">
<button onclick="test()"> Create </button>
<br>
<br>
<br>
<button onclick="alertHero()"> Check your hero </button>
Комментарии:
1.
mainCharacter
не определен в области, к которойalertHero
имеет доступ (которая является глобальной областью).test
возвращает объект, но вы ничего с ним не делаете. «Как мне извлечь объект mainCharacter из функции test()?» Учитывая способ написания вашего кода, вы можете присвоить его глобальной переменной:window.mainCharacter = test();
.2. похоже, вы нигде не сохраняли mainCharacter
3. Итак, что мне делать???
4. Хотите создать объект из записей пользователей
5. либо сохраните его как глобальную переменную, либо в закрытии
Ответ №1:
Вам следует взглянуть на область. Быстрое исправление может быть чем-то вроде этого:
var mainCharacter;
...
function test() {
// same as your old code
mainCharacter = new Hero(...);
}
function alertHero() {
alert(mainCharacter.lives);
}