Javascript-返回返回函数的值
我现在正在做一个项目,主要是前端UI 现在我的一个函数遇到了一个问题,返回值是返回函数本身,而不是函数的结果 我将首先解释预期结果: 1.)页面上有一个菜单,当单击菜单中的按钮时,另一个菜单会添加到页面中,并带有自己的按钮-我将其称为子菜单 2.)单击子菜单中可用的按钮时,会创建另一个菜单并将其添加到页面其他位置的列表中 我将在下面解释我的代码以及问题所在: 1.)此处是创建菜单按钮的位置:Javascript-返回返回函数的值,javascript,scope,closures,return-value,return-type,Javascript,Scope,Closures,Return Value,Return Type,我现在正在做一个项目,主要是前端UI 现在我的一个函数遇到了一个问题,返回值是返回函数本身,而不是函数的结果 我将首先解释预期结果: 1.)页面上有一个菜单,当单击菜单中的按钮时,另一个菜单会添加到页面中,并带有自己的按钮-我将其称为子菜单 2.)单击子菜单中可用的按钮时,会创建另一个菜单并将其添加到页面其他位置的列表中 我将在下面解释我的代码以及问题所在: 1.)此处是创建菜单按钮的位置: var add = document.createElement('button'); 2.)在这里,
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);
我使用了变量闭包,并出于闭包原因将其传递给了匿名函数,这样就可以通过for循环修改变量arrayItem
您可能会注意到函数addEntityPanel,该函数创建我所指的菜单并将其添加到列表中,它还返回一个对象,其中包含用于创建菜单的所有html元素-将其存储在变量enemyPanel
中
测试函数中的enemyPanel
返回变量test
,测试返回变量closure
,该变量应允许我访问addEntityPanel函数中创建的对象enemyPanel;然而,返回的只是作为字符串的函数本身。我试图改变:
return test;
到
但所有这些都是在创建子菜单中的按钮时执行该功能。我只希望在单击按钮时执行它
我对闭包不太熟悉,所以如果闭包函数有什么问题阻止它生成所需的输出,我不会感到惊讶
我愿意接受任何建议。请让我知道你们的想法,谢谢
…enemyPanel
从test
函数返回变量test
不,不是。您将函数本身分配给变量test
,而不是调用它的结果
有两个问题:
addEventListener
。它应该是test
,由closure
创建的函数,而不是closure
add.addEventListener("click", test, false);
enemyPanel
。通过addEventListener
添加的事件处理程序的返回值。ª您不能将enemyPanel
返回到任何内容。您可以创建它,将它分配给该函数作用域中的变量,将它添加到列表中,等等,但不能从事件处理程序中的任何位置返回它这是我贫血小博客上的一篇帖子。@JonathanHinds-抱歉,完全错过了这一点,以及你在用
结束时所做的事情。已修复。您想如何处理enemyPanel
?在关闭
中,您无法对其执行任何操作;单击时,closure
已经返回。我有一个单独的switch语句,它将对象传递到addEntityPanel,该语句从函数中获取enemyPanel,并根据对象的“type”属性将其他子对象追加到。我可以创建和附加enemyPanel,但如果没有访问权限,我不能向enemyPanel附加任何内容。-我现在正在运行一些测试,看看是否有其他方法可以访问enemyPanel。将该逻辑放入一个函数中,并从事件处理程序调用该函数,传入该面板。
add.addEventListener("click", test, false);