【功能说明】
  最简单的可取消多选效果(以从水果篮中挑选水果为例)

【html代码说明】

<div class="box" id="box">
<input class="out" placeholder = "请挑选我要的水果" disabled>
<button class="btn">合上我的水果篮子</button><br>
<ul class="list">
<li class="in red">苹果</li>
<li class="in purple">葡萄</li>
<li class="in yellow">香蕉</li>
<li class="in green">青梅</li>
<li class="in orange">桔子</li>
</ul>
</div>

【css重点代码说明】

//设置展示框中乳白色文字效果
.out{
width: 300px;
height:30px;
line-height: 50px;
padding: 10px;
text-align: center;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 20px;
color: #f1ebe5;
text-shadow: 0 8px 9px #c4b59d, 0px -2px 1px #fff;
font-weight: bold;
background: linear-gradient(to bottom, #ece4d9 0%,#e9dfd1 100%);
vertical-align: middle;
}
//水果篮显示效果
.list,.list_hid{
height: 50px;
line-height: 50px;
margin-top: 20px;
overflow: hidden;
text-align: center;
background-color: #ccc;
border-radius: 10px;
transition: 500ms height;
}
//水果篮隐藏效果
.list_hid{
height: 0;
}

【js代码说明】

//获取整个盒子
var oBox = document.getElementById('box');
//获取按钮
var oBtn = oBox.getElementsByTagName('button')[0];
//获取展示框
var oOut = oBox.getElementsByTagName('input')[0];
//获取水果篮子
var oList = oBox.getElementsByTagName('ul')[0];
//获取水果篮子里面的所有水果
var aIn = oList.getElementsByTagName('li'); //给按钮绑定事件
oBtn.onclick = function(){
//若list的className为list,说明此时水果篮子处于打开状态
if(oList.className == 'list'){
//更改其className为list_hid,关闭水果篮子
oList.className = 'list_hid';
//设置文字显示为打开我的水果篮子
this.innerHTML = '打开我的水果篮子';
//此时水果篮子处于关闭状态
}else{
//更改其className为list,打开水果篮子
oList.className = 'list';
//设置文字显示为合上我的水果篮子
this.innerHTML = '合上我的水果篮子';
}
} for(var i = 0; i < aIn.length; i++){
//给每个水果添加标记,默认为false,表示未被选中
aIn[i].mark = false;
//给每个水果添加事件
aIn[i].onclick = function(){
//当水果选中时,取消选中;当水果未选中时,将其选中
this.mark = !this.mark;
//若该水果选中,则文字颜色变为亮灰色
if(this.mark){
this.style.color = '#ccc';
//若未选中,则文字颜色为黑色
}else{
this.style.color = 'black';
}
//运行展示框函数
fnOut();
}
} //设置展示框函数
function fnOut(){
//设置临时字符串,来存储展示框要显示的值
var str = '';
for(var i = 0; i < aIn.length; i++){
//当该水果被选中时
if(aIn[i].mark){
//将其innerHTML添加到临时字符串中
str += ',' + aIn[i].innerHTML;
}
}
//再将最开始第一个水果前的逗号去掉
oOut.value = str.slice(1);
};

【效果展示】

【源码查看】

最简单的可取消多选效果(以从水果篮中挑选水果为例)【jsDEMO】的更多相关文章

  1. 使用AngularJS实现简单:全选和取消全选功能

    这里用到AngularJS四大特性之二----双向数据绑定 注意:没写一行DOM代码!这就是ng的优点,bootstrap.css为了布局,JS代码也只是简单创建ng模块和ng控制器 效果: < ...

  2. jQuery实现全选效果【转】

    这是一段用jquery实现全选的代码,主要思路如下: 1.所有的复选框都有单击事件,所有效果都是在单击事件下实现的 2.全选复选框所实现的功能与其他复选选项实现的功能不同,所有在单击事件内做一个判断, ...

  3. avalon全选效果分析讲解

    全选功能就是 1.点击全选控制循环元素是否选中.(点击全选,下面的所有元素选中,再次点击 所有元素取消选中.) 2.点击循环元素控制全选.(如果当前元素是未选中状态则全选不选中,如果当前元素是选中状态 ...

  4. DataGridView取消默认选中行

    DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.在DataGridView绑定数据之后加上了ClearSelection().这样一来,不论是启动窗体 ...

  5. jquery checkbox勾选取消勾选的诡异问题

    jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form>        你爱好的运动是?<input type=&q ...

  6. jQuery--checkbox全选/取消全选

    用JavaScript使页面上的一组checkbox全选/取消全选,逻辑很简单,实现代码也没有太难的语法.但使用jQuery实现则更简单,代码也很简洁,精辟! jQuery版本:1.3.2 <h ...

  7. vue实现全选效果

    vue实现全选效果 接触vue快半年了,记得刚用vue做项目的时候遇到一个全选功能,当时到处百度也没有找到怎么实现,最后还是用了jquery进行dom操作实现的. 今天没事就顺手写了一个,感觉很简单, ...

  8. AngularJS--购物车全选/取消全选功能实现

    刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1.勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定: 2.选中 ...

  9. react实现全选、取消全选和个别选择

    react里面实现全选和取消全选,个别选择等操作,效果如下 代码: import React, {Component} from 'react' export default class Demo e ...

随机推荐

  1. Jetty源码分析(一)

    一.目的 1.了解jetty组成架构: 2.学习jetty启动过程: 3.学习请求访问过程: 4.学习jetty内各模块作用,学习各模块内部代码: 二.jetty版本 本文所学习的jetty版本为:9 ...

  2. modal的使用

    $modal是一个可以迅速创建模态窗口的服务,创建部分页,控制器,并关联他们 $modal仅有一个方法open(options) templateUrl:模态窗口的地址 template:用于显示ht ...

  3. 奇妙的动态代理:EF中返回的对象为什么序列化失败

    今天有如鹏的学生遇到一个问题:把一个对象保存到Session中(进程外Session)后,Web服务器重启,当从Session读取这个对象的时候报错,提示是一个“T_Users”后面跟着一大串数字的类 ...

  4. 年底了,特贡献一些C#有意思的算法题

    2013年,即将要过去了.屌丝C#程序员们拿到了年终奖不?是不是又想蠢蠢欲动了?是不是想通过跳槽来为自己实现加薪的梦想?好吧,跳槽之前还是做点准备吧,准备好C#的笔试吧.这里我收集了些奉献给大家,大家 ...

  5. tcp/udp高并发和高吐吞性能测试工具

    在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间. ...

  6. 我的ORM之八-- 事件

    我的ORM索引 dbo.Event 需要新建一个类,继承:IDboEvent,并设置给:dbo.Event,如: dbo.Event = MyOqlEvent.GetInstance(); 在 IDb ...

  7. JavaScript使用DeviceOne开发实战(五)仿ZAKER应用

    关于index底下切换的的组件,可以用ViewShower实现,详见: do_ViewShower http://bbs.deviceone.net/forum.php?mod=viewthread& ...

  8. [ZigBee] 10、ZigBee之睡眠定时器

    0.概述 睡眠定时器用于设置系统进入和退出低功耗睡眠模式之间的周期.睡眠定时器还用于当进入低功耗睡眠模式时,维持定时器2 的定时. 睡眠定时器的主要功能如下: ● 24 位的定时器正计数器,运行在32 ...

  9. AWS re:Invent 2014回顾

    亚马逊在2014年11月11-14日的拉斯维加斯举行了一年一度的re:Invent大会.在今年的大会上,亚马逊一股脑发布和更新了很多服务.现在就由我来带领大家了解一下这些新服务. 安全及规范相关 AW ...

  10. 如何在施工物料管理Web系统中处理大量数据并显示

    最近在开发施工物料管理系统,其中涉及大量的物料信息需要管理和汇总,数据量非常庞大.之前尝试自己通过将原始数据,加工处理建模,在后台代码中通过分组.转置再显示到 Web 页面中,但自己编写的代码量非常大 ...