在javascript中如何将内部函数的值传递给外部函数?

在javascript中如何将内部函数的值传递给外部函数?,javascript,Javascript,我想把内部函数的值传递给外部函数。我想在单击treeImage时更改a=2的值。这是我的代码,我做错了什么 <script type="text/javascript" language="javascript"> Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); function EndRequestHandler(sender, args)

我想把内部函数的值传递给外部函数。我想在单击treeImage时更改a=2的值。这是我的代码,我做错了什么

 <script type="text/javascript" language="javascript">   
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
     function EndRequestHandler(sender, args) {
         var a;
         var treeViewData = window["<%=TreeView2.ClientID%>" + "_Data"];
         var treeView1 = $('#<%= TreeView2.ClientID %>');
         var treeNodes = treeView1.find("div[id$=Nodes]");
         var treeImages = treeView1.find("img").not("img[alt=\'\']");
         treeImages.click(function () {//if image is clicked a should be 2
             a = 2;
         });
         if (treeViewData.selectedNodeID.value != ""&&a!=2)
         {
             $find("dde").hide();
         }
         else
         {
             $find("dde").show();
         }  
     }
</script>
将var置于EndRequestHandler外部


您在代码中所做的是一个闭包,但这是一个毫无意义的闭包。treeImages.click的函数是围绕a变量关闭的,但给定您的代码,它的行为与var a在treeImages.click函数中没有任何区别。

当用户单击元素时,单击处理程序会发生,对吗?因此,应该非常清楚的是,绑定click处理程序之后的代码将在单击发生之前运行很长时间。如果您希望在每次单击时都运行该代码,那么将其放入单击处理程序中。简短的回答是,您目前无法运行。a的赋值绑定到一个事件,单击,if将在该事件实际发生之前执行。依赖于赋值的对的任何使用也必须绑定到它。@当我将if-In-click事件放入时,请眯着眼,因为它没有隐藏或显示dde,这就是为什么我想用变量来操作它。然后,您应该询问实际问题,而不是您认为合适的解决方案。谢谢忍者的投票。我很感谢你的评论。我想你在得到2个DV后应该仔细看看这个问题。他希望在内部函数click处理程序中分配的变量能够被外部函数EndRequestHandler访问,并且它已经可以访问了。问题不在于范围,而在于该函数中所示用途的数据可用性。如果treeViewData.selectedNodeID.value!=&&a=2投票很可能是因为问题实际上不在变量的范围内,也不在可以引用的地方。EndRequestHandler中的所有内容都可以访问它,包括不声明自己的变量的嵌入式函数。问题在于代码的执行顺序,这并不是严格意义上的自上而下。分配a的单击处理程序将在稍后的某个时间发生,也就是在对if进行评估之后。是的,你们都是正确的。我为他的代码提供了一个解决方案,以实现他的预期目标。将变量初始化移动到全局范围,他的代码就解决了问题。我会这样做吗?绝对不是。代码是否会产生模糊的副作用,使调试变得困难?绝对是的。在这段代码中,我想显示DropDownExtender,如果在Treeview中单击了plusminus符号。如果单击文本,它应该隐藏。