这节讲述多选框的使用,当然,肯定是结合css和Javascript一起的。

checkbox的使用1:

演示代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DHTML技术演示---checkbox的使用1</title>
<script type="text/javascript">
//html中<pre></pre>让代码原样输出-小提示
function getSum(){
var sum=0;
var arrChkNode = document.getElementsByName("item");
for(var x=0;x<arrChkNode.length;x++){
if(arrChkNode[x].checked){
sum+=parseInt(arrChkNode[x].value);
}
}
var sVal = sum+"元";
//字体颜色设置为红色
//document.getElementById("sumid").innerHTML="<font color='red'>aaa</font>";
document.getElementById("sumid").innerHTML=sVal.fontcolor("red"); } function checkAll(aChkAllNode){
var arrChkNodes = document.getElementsByName("item");
for(var x=0;x<arrChkNodes.length;x++){
//arrChkNodes[x].checked=true;//"true"也可以,但不建议这样使用,因为API中要求的是boolean类型
arrChkNodes[x].checked= aChkAllNode.checked;
}
}
</script> </head> <body>
<input type="checkbox" name="item" value="8000"/>空调:8000元<br/>
<input type="checkbox" name="item" value="160"/>风扇:160元<br/>
<input type="checkbox" name="item" value="4500"/>电脑:4500元<br/>
<input type="checkbox" name="item" value="5000"/>投影仪:5000元<br/>
<input type="checkbox" onclick="checkAll(this)"/>全选<br/>
<input type="button" value="总金额是:" onclick="getSum()"><span id="sumid"> </span>
</body>
</html>

360浏览器8.1 演示结果:

checkbox的使用2:

仿邮件选择的方式做多选框

table.css:

table{
border:#ff80ff 1px solid;
/*solid :  实线边框 */
width:800px;
border-collapse:collapse;
/*separate :  默认值。边框独立(标准HTML)
collapse :  相邻边被合并
*/
}
table td{/*table 下面的td*/
border:#0000ff 1px solid;
padding:5px;/*内补丁*/
}
table th{
border:#ff80ff 1px solid;
padding:5px;
background-color:#c0c0c0;
}
.one{
background-color:#80ff00;
}
.two{
background-color:#ff80ff;
}
.over{
background-color:#ffff00;
}

第一种方式:

代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DHTML技术演示---checkbox的使用2</title>
<style type="text/css">
@import url(table.css);
</style> <script type="text/javascript">
var name;
function trColor(){
var oTableNode = document.getElementById("mailTable");
var collTrNodes = oTableNode.rows;//得到表格的所有行对象-返回数组
for(var x=1; x<collTrNodes.length;x++ ){
if(x%2==1){
collTrNodes[x].className="one";
}else{
collTrNodes[x].className="two";
}
collTrNodes[x].onmouseover=function(){
name=this.className;
this.className="over";
/*下面这种注册事件的方式也可以
this.onmouseout=function(){
this.className=name;
}
*/
}
collTrNodes[x].onmouseout=function(){
this.className=name;
}
}
}
onload = function(){
trColor();
} function checkAll(aChkboxNode){
var collChkboxAllNodes = document.getElementsByName("all");
//取消部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false; var collMailNodes = document.getElementsByName("mail");
for(var x=0;x<collMailNodes.length;x++){
collMailNodes[x].checked = aChkboxNode.checked;
}
collChkboxAllNodes[0].checked = aChkboxNode.checked;
collChkboxAllNodes[1].checked = aChkboxNode.checked;
} function checkAllByBtn1(flag){
var collMailNodes = document.getElementsByName("mail");
for(var x=0;x<collMailNodes.length;x++){
collMailNodes[x].checked = flag;
}
var collChkboxAllNodes = document.getElementsByName("all");
collChkboxAllNodes[0].checked = flag;
collChkboxAllNodes[1].checked = flag;
//取消部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false;
} function checkAllByBtn2(){
var collMailNodes = document.getElementsByName("mail");
var n=0;
for(var x=0;x<collMailNodes.length;x++ ){
collMailNodes[x].checked = !collMailNodes[x].checked;
if( collMailNodes[x].checked ){
n++;
}
}
var collChkboxAllNodes = document.getElementsByName("all");
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false;
if(n==0){
collChkboxAllNodes[0].checked = false;
collChkboxAllNodes[1].checked = false;
}else if(n==collMailNodes.length){
collChkboxAllNodes[0].checked = true;
collChkboxAllNodes[1].checked = true;
}else{//部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=true;
collChkboxAllNodes[1].indeterminate=true;
}
} function deleteMail(){
if(!confirm("你真的要删除所选邮件吗?")){//弹出确认对话框
return;
} //获取所有的邮件
var collMailChkNodes = document.getElementsByName("mail");
for(var x=0;x<collMailChkNodes.length;x++){
if (collMailChkNodes[x].checked) {//选中,则删除
//先拿到tr对象
var oTrNode = collMailChkNodes[x].parentNode.parentNode;
oTrNode.parentNode.removeChild(oTrNode);
//bug:节点容器中,remove之后,长度会变。
x--;//长度修正--还有一种解决方案是:从后往前删
}
}
trColor();
} </script> </head> <body>
<h2>邮件列表</h2>
<table id="mailTable">
<tr>
<th><input type="checkbox" name="all" onclick="checkAll(this)"/>全选</th> <th>发件人</th> <th>邮件标题</th> <th>时间</th>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张三</td> <td>邮件标题11</td> <td>2016年6月16日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>李四</td> <td>邮件标题22</td> <td>2016年6月15日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张四</td> <td>邮件标题33</td> <td>2016年6月14日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>Jack</td> <td>邮件标题44</td> <td>2016年6月18日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>Rose</td> <td>邮件标题55</td> <td>2016年6月25日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张六</td> <td>邮件标题66</td> <td>2016年6月16日</td>
</tr>
<tr>
<td><input type="checkbox" name="all" onClick="checkAll(this)"/>全选</td> <td colspan="3">
<!--colspan=3-表示这一列占3列 -->
<input type="button" value="全选" onclick="checkAllByBtn1(true)">
<input type="button" value="取消全选" onclick="checkAllByBtn1(false)">
<input type="button" value="反选" onclick="checkAllByBtn2()"> <input type="button" value="删除所选邮件" onClick="deleteMail()">
</td>
</tr> </table> </body>
</html>

第二中方式:把2个方法合并为一个方法:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DHTML技术演示---checkbox的使用2</title>
<style type="text/css">
@import url(table.css);
</style> <script type="text/javascript">
var name;
function trColor(){
var oTableNode = document.getElementById("mailTable");
var collTrNodes = oTableNode.rows;//得到表格的所有行对象-返回数组
for(var x=1; x<collTrNodes.length;x++ ){
if(x%2==1){
collTrNodes[x].className="one";
}else{
collTrNodes[x].className="two";
}
collTrNodes[x].onmouseover=function(){
name=this.className;
this.className="over";
/*下面这种注册事件的方式也可以
this.onmouseout=function(){
this.className=name;
}
*/
}
collTrNodes[x].onmouseout=function(){
this.className=name;
}
}
}
onload = function(){
trColor();
} function checkAll(aChkboxNode){
var collChkboxAllNodes = document.getElementsByName("all");
//取消部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false; var collMailNodes = document.getElementsByName("mail");
for(var x=0;x<collMailNodes.length;x++){
collMailNodes[x].checked = aChkboxNode.checked;
}
collChkboxAllNodes[0].checked = aChkboxNode.checked;
collChkboxAllNodes[1].checked = aChkboxNode.checked;
} //合并的方法:
function checkAllByBtn(num){
//获得邮件的所有多选框对象
var collMailNodes = document.getElementsByName("mail"); var collChkboxAllNodes = document.getElementsByName("all");//获得那2个全选的多选框
//取消部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=false;
collChkboxAllNodes[1].indeterminate=false; var n=0;
//遍历所有的邮件多选框
for(var x=0;x<collMailNodes.length;x++){
if(num>1){//反选
collMailNodes[x].checked = !collMailNodes[x].checked;
}else{
collMailNodes[x].checked = num;
}
if(collMailNodes[x].checked){
n++;
}
} if(n==0){
collChkboxAllNodes[0].checked = false;
collChkboxAllNodes[1].checked = false;
}else if(n==collMailNodes.length){
collChkboxAllNodes[0].checked = true;
collChkboxAllNodes[1].checked = true;
}else{//部分选中时的显示样式
collChkboxAllNodes[0].indeterminate=true;
collChkboxAllNodes[1].indeterminate=true;
} } function deleteMail(){
if(!confirm("你真的要删除所选邮件吗?")){//弹出确认对话框
return;
} //获取所有的邮件
var collMailChkNodes = document.getElementsByName("mail");
for(var x=0;x<collMailChkNodes.length;x++){
if (collMailChkNodes[x].checked) {//选中,则删除
//先拿到tr对象
var oTrNode = collMailChkNodes[x].parentNode.parentNode;
oTrNode.parentNode.removeChild(oTrNode);
//bug:节点容器中,remove之后,长度会变。
x--;//长度修正--还有一种解决方案是:从后往前删
}
}
trColor();
} </script> </head> <body>
<h2>邮件列表</h2>
<table id="mailTable">
<tr>
<th><input type="checkbox" name="all" onclick="checkAll(this)"/>全选</th> <th>发件人</th> <th>邮件标题</th> <th>时间</th>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张三</td> <td>邮件标题11</td> <td>2016年6月16日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>李四</td> <td>邮件标题22</td> <td>2016年6月15日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张四</td> <td>邮件标题33</td> <td>2016年6月14日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>Jack</td> <td>邮件标题44</td> <td>2016年6月18日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>Rose</td> <td>邮件标题55</td> <td>2016年6月25日</td>
</tr>
<tr>
<td><input type="checkbox" name="mail" /></td>
<td>张六</td> <td>邮件标题66</td> <td>2016年6月16日</td>
</tr>
<tr>
<td><input type="checkbox" name="all" onClick="checkAll(this)"/>全选</td> <td colspan="3">
<!--colspan=3-表示这一列占3列 -->
<input type="button" value="全选" onClick="checkAllByBtn(1)">
<input type="button" value="取消全选" onClick="checkAllByBtn(0)">
<input type="button" value="反选" onClick="checkAllByBtn(2)">
<input type="button" value="删除所选邮件" onClick="deleteMail()">
</td>
</tr> </table> </body>
</html>

360浏览器8.1演示结果:

JavaScript---网络编程(10)--DHTML技术演示(3)-多选框的更多相关文章

  1. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)

    这里不进行很复杂的后台验证以及JavaScript的正则表达式,只是简单的介绍下这个技术,简单的后台接收与跳转,大概了解怎么验证的就可以.具体的技术,我后面还会继续写博客的.本人也还在学习中. 表单验 ...

  2. JavaScript---网络编程(11)--DHTML技术演示(4)-单选框/下拉菜单/添加文件

    本节讲述单选框/下拉菜单/添加文件,综合css,html和JavaScript. 单选框: 实现的功能是:(类似平时的性格测试) 先隐藏一部分页面,然后通过点击单选框来显示. 再通过选项的选择-(每个 ...

  3. JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强

    对上篇博客的最后那个表格隔行高亮显示加了个功能,鼠标监听和年龄从小到大排序. 演示代码: <html> <head> <title>DHTML技术演示---表格中页 ...

  4. JavaScript---网络编程(9-1)--DHTML技术演示(2-1)-表格创建的几种方式

    一:用最底层的方式,该方式用来创建别的对象树也可以 代码演示: <html> <head> <title>DHTML技术演示---表格创建--用最底层的方式,其实该 ...

  5. JavaScript---网络编程(8)-DHTML技术演示(1)

    DHTML技术使用的基本思路: 1. 用标签封装数据-html范畴 2. 定义样式-css范畴 3. 明确事件源.事件和要处理的节点-dom范畴 4. 明确具体的操作方式,其实就是事件的处理内容(过程 ...

  6. 10个HTML5美化版复选框和单选框

    单选框Radiobox和复选框checkbox在网页中也十分常见,虽然它没有按钮的交互性强,但是如果能把它们像按钮那样美化一下,那也是非常不错的.本文收集了10个相对比较漂亮的美化版单选框和复选框,希 ...

  7. Linux网络编程10——使用UDP实现五子棋对战

    思路 1. 通信 为了同步双方的棋盘,每当一方在棋盘上落子之后,都需要发送给对方一个msg消息,让对方知道落子位置.msg结构体如下: /* 用于发给对方的信息 */ typedef struct t ...

  8. Linux网络编程-IO复用技术

    IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了.Linux中,提 ...

  9. Socket网络编程TCP、UDP演示样例

    Socket网络编程: 1) OSI(了解): 国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(O ...

随机推荐

  1. Flask,HelloWorld

    Flask,HelloWorld # -*- coding:utf-8 -*- ''' Created on 2015年10月19日 ''' from flask import Flask app = ...

  2. 安装"MySQLdb"一波三折.

    在慕课网学习课程"Python操作MySQL数据库",安装"MySQLdb"时遇到问题. 先是找错地方: 百度搜索"Mysql for Python& ...

  3. ABP手机端调用API时的CORS

    这个问题其实很早就考虑了,当时因为也没有特别着急去解决这个问题,就一直拖着.... 好吧,拖延症是不好的,所有不懒得做的,终将会逼着你去再很短的时间内去解决问题...实现项目 改写一个已有的webfo ...

  4. 玩转HTML5移动页面(动效篇)

    原文:http://www.grycheng.com/?p=458 作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有 ...

  5. Boost1.62+win7+VC2015编译

    下载 通过boost官方网站, 或直接在source forge下载boost_1_62_0. 可选包 Zlib library, 环境变量: ZLIB_SOURCE bzip2, 环境变量: BZI ...

  6. linux下进度条的简单实现

    在实现进度条之前,先学习一下makefile. 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编 ...

  7. C++ 类族的设计

     - 类族的设计]    按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积.体积并输出并且完成要求的计算任务:    (1)先建立一个Point(点)类,包含数据成员 ...

  8. 《Linux命令行大全》系列(二、导航)

    文件系统的导航,是一个不断访问树形结构中节点的过程. 文件系统树 Linux只有一个倒立的文件系统树 不同设备可以挂载到这同一个树上 文件和子目录是此树的组成部分,最顶层的即根目录 目录 根据树节点间 ...

  9. Analysis Guidelines

    This section describes some best practices for analysis. These practices come from experience of ana ...

  10. ANDROID_MARS学习笔记_S05_006_距离传感器

    import android.app.Activity; import android.content.Context; import android.hardware.Sensor; import ...