• DOM文档对象总结


    DOM总结:
    
    DOM:文档对象模型document object model
    
    DOM三层模型:
    
    DOM1:将HTML文档封装成对象
    
    DOM2:将XML文档封装成对象
    
    DOM3:将XML文档封装成对象
    
    DOM树:将HTML中的标签按照层级关系封装成节点对象
    
    DOM的出现使静态的HTML页面的标签变为动态的可操作的节点对象
    
    DHTML:动态的HTML,是HTML、CSS、DOM、js四种技术的综合
    
    HTML:封装页面数据
    
    CSS:设置标签中的数据样式
    
    DOM:将标签封装成对象
    
    js:将三种进行融合,通过程序设计完成动态效果的操作
    
    标记型文档一加载进内存,内存中就产生了相应的DOM树,由此产生的弊端就是,文档过大时,消耗资源,对于大型文档,可用SAX方式解析。
    
    HTML文档中的层次关系,DOM树的层次结构
    
    document HTML文档对象
    
    |--head
    
    |--title
    
    |--base
    
    |--meta
    
    |--link
    
    |--body
    
    |--form
    
    |--input
    
    |--select
    
    |--textarea
    
    |--div
    
    |--table
    
    |--tbody默认是有的,即使没写
    
    |--tr
    
    |--td
    
    |--th
    
    |--a
    
    .....
    
    将HTML文档及其中的标签都封装成对象,方便操作。
    
    节点都有的属性:nodeName,nodeType,nodeValue
    
    注意区分DOM代码中对象的属性和HTML、CSS代码中的属性写法上不同
    
    节点类型:
    
      标签型节点:nodeType为1,容器型节点的value为空null,没有值
    
     文本型节点:名字#text类型为3
    
     注释型节点:#comment类型为8
    
     属性型节点:类型为2 属性可通过对象的attributes集合属性获取
    
     文档型节点:#document类型为9
    
    节点关系:
    
    父节点:每个节点有且只有一个父节点,通过节点parentNode属性获取
    
    子节点:可以有多个,通过节点childNodes属性获取子节点集合(数组)
    
    兄弟节点:分上一个和下一个,通过previousSlbing和nextSlibing属性获取
    
    注意页面中标签之间的空行也是文本节点,浏览器解析时出现也可能没有这个节点
    
    获取节点的方法:
    
    1、getElementById(HTML标签中定义的Id值)
    
    获取文档中指定的id对象的标签对象,注意保证id值的唯一性
    
    如果有多个标签id相同,获取id对应的第一个对象
    
     
    
    div内部数据
    style属性中的内容为CSS代码,注意区分DOM中的相同属性名称
    
    2、getElementsByName(HTML标签中定义的name值)
    
    获取文档中所有与指定标签名相同的所有对象,封装为数组返回
    
    3、getElementsByTagName(HTML标签名)
    
    获取文档中与指定标签名相同的所有对象,返回数组
    
    容器型标签中都有该方法,如Div,table,p
    
       每个对象都有一个集合属性all,可以获取该对象中的所有节点对象的引用,但是all属性不获取文本型节点和空行产生的节点,还有有一个attributes集合属性,用来获取该对象的所有属性。
    
    window对象:代表浏览器打开一个窗口
    
    window中的对象:
    
        document:窗口中的HTML文档event:事件状态
    
        history:历史记录location,当前地址栏信息
    
        navigator:关于浏览器的信息screen:屏幕信息
    
    navigator对象:window.navigator.href或者navigator.href
    
    属性:appCodeName appName appVersion获取浏览器代码名称、名称、版本
    
    platform获取操作系统名称
    
    history对象:只有一个length属性
    
    方法:back() forward() go()都是从历史列表中装入URL
    
    location对象:此对象的属性既可用来获取又可用来设置对应属性的值
    
    属性:host获取或设置URL的主机名和端口号 hostname port
    
    href :URL protocol:协议 pathname:文件名或路径
    
    search:href属性中问号后面的部分 hash:href属性中井号后的部分
    
    location对象的任一属性改变后浏览器都将立即前往指定的URL
    
    screen对象:
    
    属性:availHeight和availWidth是系统屏幕的有效区域,不包括Windows的任务栏
    
    height和width是系统屏幕的分辨率值
    
    window对象方法:
    
    alert:确定对话框
    
    confirm:确定取消对话框,返回true或false
    
    prompt(提示信息,[输入默认值]):可接收输入数据的对话框,返回输入的文本数据
    
    moveBy(x, y):使窗体根据指定的坐标值偏移 窗口抖动效果
    
    moveTo(x, y):使窗体移动到指定坐标值
    
    resizeBy(x, y):窗体缩放指定偏移值 resizeTo(x, y):窗体缩放至指定值
    
    scroll(x, y):将窗口滚动到距窗口左上角指定偏移值的位置
    
    scrollBy(x, y):将窗口滚动指定的偏移值
    
    scrollTo(x, y):将窗口滚动到指定位置
    
    close:关闭窗口
    
    open:打开一个窗口window.open( [sURL] [, sName] [, sFeatures] [, bReplace])
    
    window.open("","_blank","fullscreen=1");这句NB了,整个屏幕都是白板
    
    sURL:打开窗口的地址,默认打开一个新的空白窗体about:blank
    
    sName:指定窗口的打开方式,即target属性值
    
    _blank:新的无标题窗口
    
    _parent:当前框架的父窗体,没有父窗体则为_self
    
    _self:当前窗口,替换当前窗口内容
    
    _search:浏览器的搜索面板内,IE5及以后版本有效
    
    _top:替换所有可以加载的框架集,没有框架则为_self
    
    sFeatures:(for example, "fullscreen=yes, toolbar=yes")
    
    height≥100px,width≥100px,left≥0,top≥0
    
    下边的属性取值可以为yes/no或1/0
    
    channelmode 默认值no  
    
    fullscreen 默认值no,改为yes记得提供关闭窗口的按钮或方法ALT+F4
    
    下边的默认值都为yes directories  location地址栏
    
    menubar菜单栏  resizable可调大小  scroll bars滚动条
    
    status状态栏  titlebar标题栏  toolbar工具栏
    
    window.open()
    
    bReplace:false(新建)或者true(替换)历史列表中的记录
    
    setTimeout:经过指定毫秒值后,计算表达式的值或执行表达式内容。返回一个id值
    
    setTimeout(“window.close()”, 5000);5秒后自动关闭窗口
    
    setInterval:没经过指定毫秒值计算表达式,循环。返回一个事件id值
    
    setInterval(“alert(111)”,3000)每隔3秒弹一次
    
    clearTimeout(id)、clearInterval(id):清除使用上边两个方法开始的事件
    
    focus:获取焦点
    
    window.setInterval(“window.focus()”, 3000);将窗口每隔3秒前置一次
    
     
    
    window事件
    
    onload:对象加载完成后 打开窗口后
    
    onunload:对象卸载完成 关闭窗口,窗体消失后
    
    onbeforeunload:对象卸载前 关闭窗口,窗体还在时
    
    onkeypress:键盘事件
    
     
    
    event对象:
    
    keyCode属性:设置或获取事件对应的按键码
    
    returnValue:设置或获取事件的返回值,false或true,用于取消事件执行效果
    
    例:文本框只允许输入数字,非数字不允许显示在文本框中
    
    <input type=text onclick=checkNum() />
    
    function checkNum()
    
    {
    
    if (!(window.event.keyCode>=48 && window.event.keyCode<=59))
    
    {
    
    alert(“不允许输入非数字”);
    
    //不加下边这句,非数字会提示但还会在文本框显示
    
    window.event.returnValue = false;取消事件执行
    
    }
    
    }
     
    
    returnValue可用在表单提交中,当表单数据不符合要求时取消提交按钮效果
    
    srcElement属性可设置或获取事件源对象
    
     
    
    取消超链接默认点击效果:让浏览器启动JavaScript解析引擎执行一个空的函数
    
    <a href=”javascript:void(0)” onclick=”method()”></a>
     
    
     
    
    CSS中的布局属性overflow:设置当对象中的内容超过其指定宽度或高度时的显示方式
    
    hidden隐藏、visible显示、scroll滚动条、auto自动
    
    使用此属性可以实现展开闭合效果,如好友列表
    
    display属性也可以完成这个效果 none隐藏,block块状显示 分行, 
    
    inline一行内显示
    
    获取事件源对象的两种方式
    
    1、event.srcElement
    
    2、事件处理时直接将事件对象通过this传递
    
     
    
    创建节点:
    
    document.createElement(标签名)创建一个指定标签名的节点
    
    document.createTextNode(文本内容)创建一个文本节点
    
    添加节点:添加到的目的节点.appendChild(要添加的节点) 添加到尾部
    
     
    
    table对象
    
    rows属性:获取表格中所有的行 cells属性:表格中所有单元格
    
    使用table对象创建行对象:table.insertRow([index])index默认-1行尾
    
    用tr对象创建单元格:tr.insertCell()
    
    注意table的下一级子节点tbody,添加行节点要加在tbody下
    
    tr对象也有cells集合属性,获取的是这一行中的单元格集合
    
    给对象添加属性
    
    1、tabNode.id = “tabid”
    
    2、tabNode.setAttribute(“id”,”tabid”)
    
    删除表格节点:
    
    删除行:tabNode.deleteRow(rowIndex)
    
    删除列:删除所有行的指定单元格 获取列数tabNode.rows[0].cells.length
    
    trNode.deleteCell(cellIndex)
    
    表格数据排序过程中定义的临时容器(存放行对象的数组)存放的都是行对象的引用。
    
     
    
    表格行颜色间隔显示和鼠标悬浮行高亮效果:
    
    间隔显示:奇偶行分别加载不同样式即可,onload事件中加载
    
    悬浮高亮:行对象的onmouseover和onmouseout事件
    
     
    
    对象.innerText 可以获取或设置对象的内部文本,但是包含的HTML标签或属性也会作为纯文本解析。要将内部的标签或HTML属性解析,需要使用innerHTML
    
    按钮一次性点击效果:event.srcElement事件源/input对象.disabled=true 按钮点击后变灰
    
     
    
    复选框操作:获取总金额
    
    获取所有复选框checkboxs,遍历,判断checked属性if (checkedboxs[x].checked)
    
    注意将复选框的value属性值进行parseInt转换
    
    全选时将其他复选框的checked属性值改为全选框的checked属性值即可
    
     
    
    通过下拉列表动态改变页面样式:select标签的onchange事件
    
    options属性:所有列表项 selectedIndex:选中项的角标
    
    获取列表选中项:selectNode.options[selectNode.selectedIndex]    值.value
    
    DOM代码改变div区域内文本样式:divNode.style.textTransform
    
    uppercase lowercase capitalize首字母大写
    
     
    
    JavaScript代码写在head标签内时要注意全局变量的问题:
    
    函数只有调用时才执行,封装在函数内部的变量没有问题;在函数外部定义的全局变量,页面加载时还没读到下边的具体标签,全局变量获取指定标签对象时就会出现null
    
     
    
    获取鼠标的坐标,让指定区域随鼠标移动
    
    获取鼠标坐标方法:event.x event.y
    
    随鼠标移动:改变指定区域的left和top属性
    
    用到的事件:body对象的onmousemove
    
    还用到CSS样式的position定位属性,将页面分层,使指定区域悬浮在body区域上方。层次:直接定义页面所有对象到同一个层里,为了对某个区域进行移动、定位,将该区域分离到另一个单独的层里
    
     
    
    //用position属性将广告区域进行分层,绝对定位,使广告区域悬浮在body区域上方
    
    <body>
    <div id=”ad” style=”position:absolute; left:0; top:0”>广告</div>
    
    <div id=”bodyid”>body区域</div>
    
    </body>
    
    window.onload=function()
    
    {
    
    document.body.onmousemove = function()
    
    {
    
    var adNode=document.getElementById(‘ad’)
    
    adNode.style.left = event.x;
    
    adNode.style.top = event.y;
    
    }
    
    }
     
    
    流氓:将广告区域的坐标值设置为鼠标坐标值左上一点,使鼠标停在广告区域中
    
    将广告区域用a标签封装
    
    在广告区域添加点击事件,点击后关闭广告ad.style.dislay=none
    
    限定边界: addiv.offsetWidth 广告区域自己的宽度
    
    document.body.clientWidth body区域的宽度
    
    边界内移动代码:
    
    <script type="text/javascript">
    
    var x=y=1;
    
    var movex=movey=0;
    
     
    
    function move()
    
    {
    
    var ad = document.getElementById("ad");
    
    movex = movex + x*5; //每次移动位置递增5个像素
    
    movey = movey + y*5;
    
     
    
    ad.style.left = movex; //移动
    
    ad.style.top = movey;
    
    //alert("aaaaaaaa");
    
     
    
    var bdx = document.body.clientWidth; //获取当前浏览器页面窗口的宽和高
    
    var bdy = document.body.clientHeight;
    
    var adx = ad.offsetWidth; //获取广告区域的大小
    
    var ady = ad.offsetHeight;
    
    //alert(bdx+"----------"+bdy);
    
    if (movex+adx >= bdx) //判断是否移到边界了
    
    { //移到边界开始递减
    
    x = -1;
    
    }
    
    else if (movex <= 0) //递减只零再开始递增
    
    {
    
    x = 1;
    
    }
    
     
    
    if (movey+ady >= bdy)
    
    {
    
    y = -1;
    
    }
    
    else if (movey <= 0)
    
    {
    
    y = 1;
    
    }
    
    }
    
    var timeid;
    
    function fly()//飞吧  每个10毫秒执行一次移动
    
    {
    
    //move();
    
    timeid = window.setInterval("move()", 100);
    
    }
    
    function over()//鼠标进入广告区停止移动
    
    {
    
    window.clearInterval(timeid);
    
    }
    
    window.onload = function() //页面一加载就开始飞
    
    {
    
    fly();
    
    var ad = document.getElementById("ad");
    
    ad.onmouseover = function()
    
    {
    
    over(); //鼠标进入取消定时移动
    
    }
    
    ad.onmouseout = function()
    
    {
    
    fly(); //鼠标离开继续移动
    
    }
    
    }
    
    function closeAD() //点击关闭后停止定时移动,隐藏广告区域
    
    {
    
    var ad = document.getElementById("ad");
    
    ad.style.display = 'none';
    
    over();
    
    }
    
    </script>
    
     
    
    </head>
    
    <body>
    
     
    
    <div id="ad" style="position:absolute; border: red 1px solid; left:0; top:0; height:90; 90">
    
    <a href="http://www.ad.com" target="_blank">广告</a><br/><br/><br/><br/>
    
    <a href="javascript:void(0)" onclick="closeAD()">关闭广告</a></div>
    
     
    
    </body>
    级联菜单:省市选择示例 select标签onchange事件 添加option项
    
    将省份对应的城市城市列表封装进二维数组,角标和省的option项角标一致
    
    选中省份后,遍历对应的城市列表,将其封装进option标签中并添加到子菜单中
    
    注意:在添加子项前需先清空子菜单项,以免将上一选项结果遗留
    
    再次注意:清空子项用遍历时,注意removeChild一次,length就减一次,如果循环变量跟着递增就会移不完
    
    移除下拉选项的简单方法,直接将列表的options属性的length置为0即可
    
     
    
    邮件列表示例中删除所选邮件时注意:
    
    和用遍历方法删除列表项时的问题一样,删除时,长度递减,循环变量递增,删不全
    
    可定义一个临时容器用来存储待删除的节点索引,然后遍历临时容器时再删除这些节点。临时容器中存放的也是表格行节点的引用,每次删除完颜色事件都要加载一遍
    
     
    
    表单验证:
    
    可以用document.forms获取页面中的所有表单对象
    
    拿到表单对象后,可以直接使用表单中的组件名获取对应组件
    
    输入框失去焦点时就开始验证:onblur事件发生就开始验证
    
    怎么让表单验证失败时提交不出去呢?  
    
    1、表单标签中的onsubmit事件中,event.returnValue=false提交按钮就失效了
    
    2、在onsubmit事件处理函数中返回false(不提交)或true(提交),再将返回结果返回给onsubmit事件即可  onsubmit=“return checkForm()”
    
    事件处理函数中使用returnValue时,onsubmit不用return即可
    
     
    
    JS中的正则表达式  限定开始结束位置^  $
    
    两种写法
    
    var reg = /^d{5}$/ 5位数字,下同
    var reg = new RegExp(“^\d{5}$”);
    
    var namereg = /^[a-z]{5}$/i 5为字母 后面加i不分大小写
     
    
    下面的示例创建一个包含正则表达式模式及相关标志的对象(re),向您演示正则表达式对象的用法。在本例中,作为结果的正则表达式对象又用于 match 方法中:
    
    function MatchDemo(){
    
       var r, re;                     // 声明变量。
    
       var s = "The rain in Spain falls mainly in the plain";
    
       re = new RegExp("Spain","i");  // 创建正则表达式对象。
    
       r = s.match(re);               // 在字符串 s 中查找匹配。
    
       return(r);                     // 返回匹配结果。
    
    }
     
    
    如果String对象的 match 方法没有找到匹配,返回 null。
    
    RegExp对象的test方法也可判断是否匹配
    
    reg.test(str) 返回boolean
    
     
    
    附件添加删除、通过下拉列表改变字体颜色、字体样式、省市级联菜单示例
    
    <style type="text/css">
    
    /*CSS区域*/
    
    a:link, a:visited{
    
    color: #FF0000;
    
    font-size: 22;
    
    text-decoration: none;
    
    }
    
    </style>
    
     
    
    <script type="text/javascript">
    
    /*javascript区域*/
    
    function addFile()
    
    {
    
    var tabNode = document.getElementById("file");
    
    var trNode = tabNode.insertRow();
    
    var tdNode_file = trNode.insertCell();
    
    var tdNode_del = trNode.insertCell();
    
     
    
    tdNode_file.innerHTML = "<input type='file' />";
    
    tdNode_del.innerHTML = "<img src='1.jpg' alt='删除文件' onclick='delFile(this)' />";
    
    }
    
     
    
    function delFile(node)
    
    {
    
    //var tabNode = document.getElementById("file");
    
    var trNode = node.parentNode.parentNode;
    
    //alert(tabNode.nodeName);
    
    //alert(trNode.nodeName);
    
    trNode.parentNode.removeChild(trNode); //父节点删除子节点 他杀
    
    }
    
    </script>
    
     
    
    <body>
    
    <!--添加删除附件-->
    
     
    
    <a href="javascript:void(0)" onclick="addFile()">点击上传文件</a>
    
     
    
    <table id="file">
    
     
    
    </table>
    
     
    
    <hr/>
    
     
    
    <style type="text/css">
    
    #bbb{
    
    border: red 3px solid;
    
     200px;
    
    }
    
    #colorid{
    
     50px;
    
    }
    
    #text{
    
    border: blue 1px solid;
    
     100px;
    
    text-align: center;
    
    margin: 10px 0px 0px 20px;
    
    }
    
    </style>
    
    <script type="text/javascript">
    
    /*鼠标指上去就盖住背景色了  想去掉没成功
    
    onload=function()
    
    {
    
    var sel = document.getElementById("colorid");
    
    sel.onmouseover = function(){sel.className="";};
    
    sel.onmouseout = function(){sel.className="";};
    
    }
    
    */
    
    function changeColor()
    
    {
    
    var sel = document.getElementById("colorid");
    
    var div = document.getElementById("text");
    
    var val = sel.options[sel.selectedIndex].value;
    
    div.style.color = val;
    
    }
    
    </script>
    
    <div id="bbb">
    
    选择颜色:
    
    <select id="colorid" onchange="changeColor()">
    
    <option value=#FFFF00 style=background:#FFFF00></option>
    
    <option value=#FF0000 style=background:#FF0000></option>
    
    <option value=#33FF00 style=background:#33FF00></option>
    
    <option value=#0033FF style=background:#0033FF></option>
    
    </select>
    
    <div id="text">
    
    变变变<br />
    
    变变变<br />
    
    变变变<br />
    
    变变变<br />
    
    变变变<br />
    
    </div>
    
    </div>
    
     
    
    <hr />
    
    <style type="text/css">
    
    #div1{
    
    background: #FFCC00;
    
     300;
    
    height: 80;
    
    }
    
    #selid{
    
     200;
    
    margin-top: 20px;
    
    margin-bottom: 20px;
    
    }
    
    #div2{
    
    background: #669999;
    
     300;
    
    }
    
    </style>
    
    <script type="text/javascript">
    
    <!—改变字体样式-->
    
    function textChange()
    
    {
    
    var div1 = document.getElementById("div1");
    
    var div2 = document.getElementById("div2");
    
    var sel = document.getElementById("selid");
    
    var val = sel.options[sel.selectedIndex].value;
    
    //alert(val);
    
    div1.style.textTransform = val;
    
    div2.innerHTML = "text-transform : "+val+";";
    
    }
    
    </script>
    
    <div id="div1">
    
    Every man dies. Not every man really lives.
    
    </div>
    
    <select id="selid" onchange="textChange()">
    
    <option value="none">--text-transform--</option>
    
    <option value="uppercase">UPPERCASE</option>
    
    <option value="lowercase">lowercase</option>
    
    </select>
    
    <div id="div2">
    
    text-transform : none;
    
    </div>
    
     
    
    <hr/>
    
    <!—省市级联菜单-->
    
    <style type="text/css">
    
    #seldiv select{
    
     150px;
    
    }
    
    </style>
    
    <script type="text/javascript">
    
    function showCity()
    
    {
    
    var arr = [[], ["朝阳区", "海淀区", "西城区", "东城区"],
    
    ["郑州市", "南阳市", "邓州市", "信阳市", "驻马店市", "开封市"],
    
    ["唐山市", "石家庄市", "廊坊市", "邯郸市"],
    
    ["北京", "上海", "深圳", "天津", "重庆", "香港特别行政区", "澳门特别行政区"]];
    
    var sel1 = document.getElementById("sel1");
    
    var sel2 = document.getElementById("sel2");
    
    var index = sel1.selectedIndex;
    
    //sel2中添加内容之前先清空下  有简单方法
    
    for (var x=1; x<sel2.options.length; )//x++) //length在减  x在递增 只移除一半
    
    {
    
    sel2.removeChild(sel2.options[x]);
    
    }
    
    for (var x=1; x<sel1.options.length; x++)
    
    {
    
    if (x == index)
    
    {
    
    for (var y=0; y<arr[x].length; y++)
    
    {
    
    var opNode = document.createElement("option");
    
    opNode.innerHTML = arr[x][y];
    
    sel2.appendChild(opNode);
    
    }
    
    }
    
    }
    
    if (sel1.selectedIndex!=0)
    
    sel2.selectedIndex = 1;
    
    }
    
    </script>
    
    <div id="seldiv">
    
    <select id="sel1" onchange="showCity()">
    
    <option value="0">选择省市</option>
    
    <option value="1">北京市</option>
    
    <option value="2">河南省</option>
    
    <option value="3">河北省</option>
    
    <option value="4">中国</option>
    
    </select>
    
     
    
    <select id="sel2">
    
    <option value="none">选择城市</option>
    
    </select>
    
    </div>
    
     
    
    </body>
    
     
    
     
    
    邮件列表示例:
    
    <style type="text/css">
    
    /*CSS区域*/
    
    table{
    
    border: black 2px solid;
    
    border-collapse: collapse;
    
    text-align: center;
    
     600px;
    
    /* margin: 10px; 外框边距*/
    
    }
    
    table th{
    
    background: #33FF33;
    
    }
    
    table td, table th{
    
    padding: 5px;
    
    border: black 1px solid;
    
    }
    
     
    
    .one{
    
    background: #CCFF66;
    
    }
    
    .two{
    
    background: #FFCCFF;
    
    }
    
    .over{
    
    background: #FF9933;
    
    }
    
    </style>
    
     
    
    <script type="text/javascript">
    
    /*javascript区域*/
    
    var name;
    
    function trColor()
    
    {
    
    var tabNode = document.getElementById("maillist");
    
    var tabRows = tabNode.rows;
    
    for (var x=1; x<tabRows.length-1; x++)
    
    {
    
    if (x%2==1)
    
    {
    
    tabRows[x].className = "one";
    
    }
    
    else
    
    tabRows[x].className = "two";
    
     
    
    tabRows[x].onmouseover = function()
    
    {
    
    name = this.className;
    
    this.className = "over";
    
    }
    
    tabRows[x].onmouseout = function()
    
    {
    
    this.className = name;
    
    }
    
    }
    
    }
    
    window.onload = function()
    
    {
    
    trColor();
    
    }
    
    function checkAll(index)
    
    {
    
    var allNodes = document.getElementsByName("all");
    
    //不管选的哪个都让两个全选框一样
    
    allNodes[Math.abs(index-1)].checked = allNodes[index].checked;
    
    var mails = document.getElementsByName("mail");
    
    for (var x=0; x<mails.length; x++)
    
    {
    
    mails[x].checked = allNodes[index].checked;
    
    }
    
    }
    
    function checkByBut(mode) //选择按钮事件处理
    
    {
    
    /*简单写法
    
    var mails = document.getElementsByName("mail");
    
    for (var x=0; x<mails.length; x++)
    
    {
    
    if (mode==2)
    
    mails[x].checked = !mails[x].checked;
    
    else
    
    mails[x].checked = mode;
    
    }
    
    */
    
    if (mode==1)
    
    {
    
    document.getElementsByName("all")[0].checked = true;
    
    checkAll(0);
    
    //alert(mode);
    
    }
    
    if (mode==0)
    
    {
    
    document.getElementsByName("all")[0].checked = false;
    
    checkAll(0);
    
    }
    
    if (mode==2)
    
    { //mails[x].checked = !mails[x].checked;
    
    var alls = document.getElementsByName("all");
    
    if (alls[0].checked) //使两个全选框同步
    
    {
    
    alls[0].checked = false;
    
    alls[1].checked = false;
    
    }
    
    var mails = document.getElementsByName("mail");
    
    for (var x=0; x<mails.length; x++)
    
    {
    
    if (mails[x].checked)
    
    {
    
    mails[x].checked = false;
    
    }
    
    else
    
    {
    
    mails[x].checked = true;
    
    }
    
    }
    
    }
    
    }
    
    function del() //删除所选
    
    {
    
    /*
    
    var mails = document.getElementsByName("mail");
    
    for (var x=0; x<mails.length; x++)
    
    {
    
    if (mails[x].checked)
    
    {
    
    var trNode = mails[x].parentNode.parentNode;
    
    trNode.removeNode(true); //这样删掉之后length在减小 而x在递增 导致删一半留一半
    
    }
    
    }
    
    trColor();
    
    */
    
    var arr = []; //记录被选择的行号
    
    var pos = 0;
    
    var mails = document.getElementsByName("mail");
    
    for (var x=0; x<mails.length; x++)
    
    {
    
    if (mails[x].checked)
    
    {
    
    var trNode = mails[x].parentNode.parentNode;
    
    arr[pos++] = trNode;
    
    }
    
    }
    
     
    
     
    
    var tabNode = document.getElementById("maillist");
    
    var tabRows = tabNode.rows;
    
    for (var x=0; x<arr.length; x++)
    
    {
    
    arr[x].removeNode(true);
    
    }
    
    trColor(); //重新加载一次样式,颜色间隔效果
    
     
    
    }
    
    </script>
    
     
    
    <body> <!--邮件列表操作演示-->
    
     
    
    <table id="maillist">
    
    <tr>
    
    <th><input type="checkbox" name="all" onclick="checkAll(0)" />全选</th>
    
    <th>发件人</th>
    
    <th>邮件主题</th>
    
    <th>邮件内容</th>
    
    <tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三11</td>
    
    <td>主题:邮件11</td>
    
    <td>内容:邮件11</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三22</td>
    
    <td>主题:邮件22</td>
    
    <td>内容:邮件22</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三33</td>
    
    <td>主题:邮件33</td>
    
    <td>内容:邮件33</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三44</td>
    
    <td>主题:邮件44</td>
    
    <td>内容:邮件44</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三55</td>
    
    <td>主题:邮件55</td>
    
    <td>内容:邮件55</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三66</td>
    
    <td>主题:邮件66</td>
    
    <td>内容:邮件66</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三77</td>
    
    <td>主题:邮件77</td>
    
    <td>内容:邮件77</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三88</td>
    
    <td>主题:邮件88</td>
    
    <td>内容:邮件88</td>
    
    </tr>
    
    <tr>
    
    <td><input type="checkbox" name="mail" /></td>
    
    <td>张三99</td>
    
    <td>主题:邮件99</td>
    
    <td>内容:邮件99</td>
    
    </tr>
    
     
    
     
    
    <tr>
    
    <th><input type="checkbox" name="all" onclick="checkAll(1)" />全选</th>
    
    <th colspan=3>
    
    <input type="button" value="全选" onclick="checkByBut(1)" />
    
    <input type="button" value="取消选择"  onclick="checkByBut(0)" />
    
    <input type="button" value="反选" onclick="checkByBut(2)" />
    
    <input type="button" value="删除所选邮件" onclick="del()" />
    
    </th>
    
    <tr>
    
    </table>
    
     
    
    </body>
     
  • 相关阅读:
    AndroidManifest.xml文件详解(uses-feature) (转载)
    两分钟彻底让你明白Android Activity生命周期(图文)! (转载)
    android studio学习----添加项目依赖包补充---添加github上的开源项目为库
    android studio学习----添加项目依赖包总结
    android studio学习----如何创建一个库项目
    android studio学习----添加项目库
    android studio学习----通过libs来导入jar包
    android studio学习----通过gradle来导入jar包
    android studio学习----gradle配置
    android studio学习----构建(gradle )依赖时使用动态依赖的问题
  • 原文地址:https://www.cnblogs.com/yw-ah/p/5733340.html
Copyright © 2020-2023  润新知