原生 JS 实现隐藏显示

此 demo 主要是用来复习 JS 数组的方法

前端新手一枚,代码肯定有不足,欢迎大家将意见和问题提出

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>JS Bin</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div class="container">
      <button class="btn btn-info">隐藏</button>
      <button class="btn btn-danger">显示</button>
      <div class="wrapper">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
      </div>
    </div>
  </body>
</html>

CSS

.wrapper .item {
  float: left;
  width: 100px;
  min-height: 100px;
  line-height: 100px;
  border: 1px solid #000;
  margin-top: 10px;
  margin-right: 10px;
  text-align: center;
}

.wrapper .style {
  border-color: red;
}

.wrapper .hide {
  display: none;
}

JS

var wrapper = document.querySelector('.wrapper'),
    hide = document.querySelector('.btn-info'),
    show = document.querySelector('.btn-danger');

function addClass(elem, classes) {
  var className = elem.className;
  elem.className = elem.className + ' ' + classes;
}

function removeClass(elem, classes) {
  var classArr = elem.className.split(' '),
      index = 0;
  for (var i = 0, len = classArr.length; i < len; i++) {
    if (classArr[i] === classes) {
      index = i;
    }
  }
  elem.className = classArr.slice(0, index).join(' ');
}

wrapper.addEventListener('click', function(e){
  if (e.target.className.indexOf('style') === -1) {
    addClass(e.target, 'style');
  } else {
    removeClass(e.target, 'style');
  }
}, false);

hide.addEventListener('click', function(e){
 var elemArr = document.querySelectorAll('.item');
  for (var i = 0; i < elemArr.length; i++) {
    if (elemArr[i].className.indexOf('style') !== -1) {
      var current = elemArr[i];
      addClass(current, 'hide');
    }
  }
}, false);

show.addEventListener('click', function(e){
  var elemArr = document.querySelectorAll('.item');
  for (var i = 0; i < elemArr.length; i++) {
    if (elemArr[i].className.indexOf('hide') !== -1) {
      var current = elemArr[i];
      removeClass(current, 'hide')
    }
  }
}, false);

查看在线效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,404评论 25 708
  • 第一次,坐了好久,呆呆盯着屏幕,不知该写什么。倒数第二篇,其实是个尴尬的位置。众筹总额刚刚突破了16万,大概最后的...
    任宁阅读 603评论 0 3
  • 几个哑巴在说话 几个哑巴在比划 她说她的心 她划着她的话 静默,沉默,无语 安静,祥和 快乐,像她们一样 不想不念,不说
    旧时雨m阅读 136评论 0 2
  • 恰好就能有一个时间,天空发白,远处的建筑看不清楚;恰好就有一个时间,感觉夏日里的这些树叶是请起来的;也是这个时间,...
    遇见一个陌生人阅读 188评论 0 1
  • 两个孩子争吵的时候确实头疼,但她们相亲相爱的时候真的让你觉得有个伴是多么幸福多么甜蜜!妹妹对姐姐完全个人崇拜,姐吃...
    萱玥妈阅读 183评论 0 1