Я сейчас работаю над проектом, который в первую очередь является интерфейсом пользователя.
Прямо сейчас я столкнулся с проблемой с одной из моих функций, в которой возвращаемое значение возвращает саму функцию, а не ее создание.
Сначала я объясню ожидаемые результаты :
1.) На странице есть меню, при нажатии на кнопку в меню на страницу добавляется другое меню со своими собственными кнопками - Я буду называть это подменю.
2.) При нажатии кнопки, доступной в подменю , создается еще одно меню , которое добавляется в список в другом месте страницы.
Я объясню код, который у меня есть, а также где проблема лежит ниже:
1.) Вот где создается кнопка меню *1023*:
var add = document.createElement('button');
2.) Здесь я добавляю прослушиватель событий к кнопке выше:
closure = (function(arrayItem)
{
var test = function(event)
{
object.spaces.push(selectedSpace.id);
object.spaceobjects.push(selectedSpace);
var enemyPanel = addEntityPanel(roomnumber, selectedSpace.id, object, object.savelocation, true);
return enemyPanel ;
};
return test;
})(arrayItem);
add.addEventListener("click", closure, false);
Я использовал переменную closure и передал ей анонимную функцию по причинам закрытия, так что переменная arrayItem может быть изменена с помощью цикла for.
Вы можете заметить функцию addEntityPanel, эта функция создает меню , о котором я говорил, и добавляет его в список, а также возвращает объект со всеми элементами html, использованными для создания меню - сохранение его в переменной enemyPanel
.
enemyPanel
из функции test возвращается в переменную test
, а test возвращается в переменную closure
, которая должна дать мне доступ к объекту врагу, созданному в функции addEntityPanel; однако все, что возвращается, - это сама функция в виде строки. Я пытался изменить:
return test;
до
return test();
Но все это выполняет функцию при создании кнопки в подменю. Я хочу, чтобы он выполнялся только при нажатии кнопки.
Я не слишком знаком с замыканием, поэтому, если что-то не так с функцией замыкания, мешающей ей генерировать желаемый результат - я не удивлюсь.
Я открыт для любых предложений. Пожалуйста, дайте мне знать, что вы, ребята, думаете, спасибо!