javascript - 简单JS切换代码简化
天蓬老师
天蓬老师 2017-04-10 18:00:35
0
2
345

下面是是自己写的日常普通切换动作,不知道怎么去简化,看着好冗余... 譬如怎么合并prevnext两个事件?委托于control-wrap父元素上?

Live Demo

HTML

1

2

3

4

5

6

7

8

9

prev next

JS

window.addEventListener('load', function () { var boxes = document.querySelectorAll('.box'); var prev = document.querySelector('.prev'); var next = document.querySelector('.next'); var comingShow = 0; var len = boxes.length - 1; boxes[0].style.display = 'block'; next.addEventListener('click', function (e) { if (comingShow < len) { ++comingShow; Array.prototype.slice.call(boxes).forEach(function (item) { item.style.display = 'none'; }); boxes[comingShow].style.display = 'block'; } } , false); prev.addEventListener('click', function (e) { if (comingShow > 0) { --comingShow; Array.prototype.slice.call(boxes).forEach(function (item) { item.style.display = 'none'; }); boxes[comingShow].style.display = 'block'; } } , false); }, false);
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆 (2)
伊谢尔伦

看题主的代码js跟html不是很呼应,写错了吧

题主提到的合并,其实看prevnext的逻辑区别仅仅只是comingShow这个变量判断和赋值的处理不同。

用父元素代理,判断event.targetprev还是next,然后分别处理好comingShow,后面的逻辑都一样。

    大家讲道理

    先合并逻辑
    很明显,prevnext都涉及dom的隐藏与现实,可能以后你还要增加指示器的操作,所以把显示/隐藏的实现封装成一个函数就好了:

    function go(index) { // 根据index进行 显示/隐藏 ... }

    那相应的prevnext就可以这样定义了:

    function next() { go(index + 1) } function next() { go(index - 1) }

    利用事件委托是好的

    tip: 如果你觉得你写的代码不够整洁优雅,可以看看别人的插件怎么写的。

      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!