当我想传递价值时,它没有奏效。 这是我的代码,
function showimage(b)
{
//if alert was here, it would show the value of b
$("#lightboxholder").show("fast","",function (b)
{
alert(b);//but now when the alert is here, it is not showing the value of b
});
}
我错过了一些男人吗?提前谢谢!
答案 0 :(得分:2)
将使用新参数调用内部函数,因此b
将替换为新变量。
如果您将function (b)
替换为function ()
- 那么内部b
应该是赋予外部函数的内容。
答案 1 :(得分:1)
这是因为函数中b
的本地值覆盖了showImage函数中b
的值。
答案 2 :(得分:0)
试试这个,
<强> Live Demo 强>
function showimage(b)
{
//if alert was here, it would show the value of b
$("#lightboxholder").show("fast", function ()
{
alert(b);//but now when the alert is here, it is not showing the value of b
});
}
答案 3 :(得分:0)
让我们从简单开始,为您提供满足您需求的代码:
function showimage(b)
{
//if alert was here, it would show the value of b
$("#lightboxholder").show("fast","",function ()
{
alert(b); // interestingly enough, it knows what b is here
});
}
从那里出现了两个主要问题:为什么你尝试的不起作用以及为什么我正在做的工作。让我们从你正在做的事情开始吧。
您正在尝试将参数传递给函数,就像调用匿名函数一样。但是,您没有调用该函数。您正在定义函数并将函数本身作为jQuery的参数。然后,jQuery会调用您在其希望的位置定义的函数。因为它需要在该点提供值,而不是,您将无法获得您希望实现的结果。因此,你不能按照你想要的方式传递参数。
然后让我们继续讨论为什么我的版本能够正常工作。这就是javascript中所谓的封装。基本上,如果定义一个函数,则可以使用定义函数的上下文中可用的任何变量。然后,Javascript会自动确保只有您使用的那些包含在您定义的函数的上下文中。这完全独立于您调用函数的位置,并且仅依赖于您定义函数的位置。因此,我只是“借用”showImage函数中的b值并在匿名函数中使用。