在jQuery中到达变量

Tar*_*rik 0 javascript jquery closures hover

我有这样的代码:

<script type="text/javascript">
    var currentPicture;//default picture
    var picEL;//the image viewer element
    jQuery("#backImageShower").hover(
        function(i)
        {
            picEL = jQuery("#dynloadarxdock > img");
            currentPicture = picEL.attr("src");
            picEl.attr("src","back.jpg");
        },
        function()
        {
            picEl.attr("src",currentPicture);
        }
    );
</script>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,它说picEl没有定义.我认为这可能是因为闭包但这段代码完美运行:

<script type="text/javascript">
    var currentPicture;//default picture
    jQuery("#backImageShower").hover(
        function(i)
        {
            currentPicture = jQuery("#dynloadarxdock > img").attr("src");
            jQuery("#dynloadarxdock > img").attr("src","back.jpg");
        },
        function()
        {
            jQuery("#dynloadarxdock > img").attr("src",currentPicture);
        }
    );
</script>
Run Code Online (Sandbox Code Playgroud)

但是这个代码也包含全局变量,它可以工作.

有人可以告诉我为什么吗?

谢谢.

Dav*_*und 7

问题是你正在混合外壳.该变量被声明为picEL但有时用作picEl(小写'l',这是您的错误所在的位置).