首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单Javascript Slideshow解释

简单Javascript Slideshow解释
EN

Stack Overflow用户
提问于 2015-08-03 00:09:16
回答 1查看 48关注 0票数 0

我在科德芬上找到了这个脚本,它确实让我的兴趣达到了顶峰,但它也让我抓狂。整个代码库没有那么大,实际上整个幻灯片脚本只有大约18行长。在下面,

代码语言:javascript
复制
(function(){
  var counter = 0, $items = document.querySelectorAll('.diy-slideshow section'),numItems = $items.length; 
  var showCurrent = function(){
    var itemToShow = Math.abs(counter%numItems);
    [].forEach.call( $items, function(el){
      el.classList.remove('show');
    });
    $items[itemToShow].classList.add('show');    
  };
  setInterval(function() {
     counter++;
     showCurrent();
  }, 5000);
})();  

所以我困惑的部分是showCurrent函数。更确切地说,是这个部分

代码语言:javascript
复制
[].forEach.call($items, function(el){...};

现在我知道[]将是一个数组,但我不知道它从哪里获得数组的值,函数如何知道数组中有X个项要循环?是什么使[].forEach循环遍历所有已知的元素?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-03 00:14:52

[].foreach.callArray.prototype.foreach.call的缩写。每个javascript函数都是一个有自己方法的对象。call()就是其中之一。

call()的第一个参数是thisArg,它表示函数期间行为为this的对象。在您的示例中,$items (是DOMElement数组)将是foreach调用中的this

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31777843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档