繁体   English   中英

图片库循环JS

[英]image gallery loop JS

    var thumbs = document.getElementsByTagName("img");
    for (var i=0; i<thumbs.length; i++)
    {
        Core.addEventListener(thumbs[i], "click",  function() {alert(i);});
    }

在上面的代码中,警报始终显示18。 那是图像缩略图的数量。 我希望它显示我单击的缩略图。 为什么不显示呢? 我还需要将单击的缩略图的值转发给另一个函数,以便我也可以显示后续的完整图像。 有人可以帮忙吗?

还建议,如果有更好的方法可以做到这一点。 非常感谢。

这是因为内部匿名函数关闭了变量i,因此它将始终向您显示迭代的最后一个值。 下一步:

Core.addEventListener(thumbs[i], "click",  (function( j) 
                                           { 
                                               return function() 
                                                      {
                                                         alert(j);
                                                      };
                                            })(i));

说明:

在您的代码迭代变量中,i是用于事件处理程序生成的内部匿名函数的全局变量,但您必须注意,尽管看起来您在创建其他匿名函数,但所有这些变量都在关注范围更广,范围更广的i。我对他们所有人还是一样。 所以最后一个值将被警告,为了避免它,我为您创建了另一个包装器函数,以便将i的值包含在另一个范围内,因此对于不同的元素将看到不同的警告。 注释中的解释也是正确的,我建议您向Google寻求Java代码关闭的知识,并阅读一些有关它的文章,一旦您知道它可能会变得非常强大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM