javascript实现Email邮件显示与删除功能

一、主要介绍:
这题采用之前的技术,根据table的rows属性,获得数组,然后对数组设置样式,所以颜色就出来了。

1).全选复选框,通过var nodess=document.getElementsByName("mail");

for(var x=0;x<nodess.length;x++){

nodess[x].checked=nodes.checked;

}

复选框函数进行

2).按钮全选,反选,和取消全选,可以用一个函数写,传入不同的参数AllBybtn(num)类型即可

函数里面 根据js的特性 非0 和 0 这两种状态,进行设置,为了同步,需要分别进行设置

3).为了显示出当全部选中就默认全选的复选框选中,所以需要对每一个复选框进行设置,采用函数checkBysingle()进行设置

4).删除所选项是需要主要,当前的是checkbox对象,上一级是td--tr--先拿到tr对象,然后对通过tr的父节点删除tr对象再删除之后,x会变化,可能有些删不到,所以需要将X的值还原,或者从后面开始删除。

2、样式设置:

<style type="text/css">
      .one{
        background-color:#00ff80;
      }
      .two{
        background-color:#80ff00;
      }
      .three{
        background-color:#0000ff;
      }
      table th{
        background-color:#c0c0c0;
      }
      table{
        width:400px;
        border:solid 1px;
      }
      table tr{
        height:50px;
      }
    </style>

三、背景颜色以及鼠标移动的事件设置

  function toaddcolor(){
          //颜色设置,
          var nodes = document.getElementById("tabid");
          var rows1 = nodes.rows;
          for (var x = 1; x < rows1.length; x++) {
            if (x % 2 == 0) {
              rows1[x].className = "one";
            }
            else {
              rows1[x].className = "two";
            }
          }
        }
          function addEvent(){
            var name;
            //当鼠标移上去之后发生相应的变化
            var nodes=document.getElementById("tabid");
            var rows1=nodes.rows;
            for (var x = 1; x < rows1.length; x++) {
            rows1[x].onmouseover = function(){
              name = this.className;
              this.className = "three";
            }
            rows1[x].onmouseout = function(){
              this.className = name;
            } 

//             alert("bb");
//             alert(rows1[x].getElementsByTagName("input")[0].nodeName);
            rows1[x].getElementsByTagName("input")[0].onclick=function(){//每一行的input对象
              document.getElementsByName("allItem")[0].indeterminate=true;//让全选的复选框形状发生变化
            }
          }
        }
        onload=function(){//在网页加载时候调用
          toaddcolor();
          addEvent();
        } 

四、复选框的全选

function allcheck(nodes){//全选checkbox的点击调用这个
          var nodess=document.getElementsByName("mail");
          for(var x=0;x<nodess.length;x++){
            nodess[x].checked=nodes.checked;
          }
          //多个全选的时候,必须和其他的一个一样
          var nodes1=document.getElementsByName("allItem");
          for(var x=0;x<nodes1.length;x++){
            nodes1[x].checked=nodes.checked;
          }
        }

五、按钮的全选

function AllBybtn(num){//全选按钮设置
          var nodess = document.getElementsByName("mail");
          /*多重for 循环不太好,可以根据js里面的特性0  非0
           for (var x = 0; x < nodess.length; x++) {
            if (num == 1) {
              nodess[x].checked = 1;
            }else if (num == 2) {
                nodess[x].checked = !nodess[x].checked;
              }else if (num == 3) {
                  nodess[x].checked = false;
                }
          }*/
          for(var x=0;x<nodess.length;x++){
            if(num<2){
              nodess[x].checked=num;
                //让全选的复选框可以 单独写个函数
                var all=document.getElementsByName("allItem");
                for(var y=0;y<all.length;y++){
                  if(num==1){
                  all[y].checked=num;
                }else{
                  all[y].checked=num;
                }
              }
            }else{
              nodess[x].checked=!nodess[x].checked;
              var all=document.getElementsByName("allItem");
                for (var y = 0; y < all.length; y++) {
                  all[y].checked=0;
                }}}} 

六、所有项目都选中之后全选自动选中

function checkBysingle(){//全部入选之后,全选的自动选中
          var flag = true;
          var node = document.getElementsByName("mail");
          for (var x = 0; x < node.length; x++) {
            if (node[x].checked == false) {
              flag = false;
              break;
            }
          } 

          var all = document.getElementsByName("allItem");
          for (var y = 0; y < all.length; y++) {
            if (flag) {
              all[y].checked = true;
            }
            else {
              all[y].checked = false;
            }}} 

 七、删除邮件的函数(删除行)

function DelBybtn(){//删除行
  var tdnode=document.getElementsByName("mail");
    /*for(var x=0;x<tdnode.length;x++){
    if(tdnode[x].checked){//对象是 checkbox 我们必须要那父级的父级 《tr》,我们需要移除的就是tr对象
       var trnode=tdnode[x].parentNode.parentNode;//tr对象
       trnode.parentNode.removeChild(trnode);//table对象移除tr对象
    // alert("aa");
    //节点容器跟Java当中的集合一样,只要是remove(),长度就会变的。这里,需要进行x的复位
      x--;
    }*/
    for(var x=tdnode.length-1;x>=0;x--){
      if(tdnode[x].checked){//对象是 checkbox 我们必须要那父级的父级 《tr》,我们需要移除的就是tr对象
       var trnode=tdnode[x].parentNode.parentNode;//tr对象
       trnode.parentNode.removeChild(trnode);//table对象移除tr对象
    }
    loading();//调用颜色的设置
  }
} 

现象一:

反选效果:

删除前:

删除后:

完整代码:

<!DOCTYPE html>
<html>
 <head>
  <!--
    这题采用之前的技术,根据table的rows属性,获得数组,然后对数组设置样式,所以颜色就出来了
    1,全选复选框,通过var nodess=document.getElementsByName("mail");
          for(var x=0;x<nodess.length;x++){
            nodess[x].checked=nodes.checked;
          }
    复选框函数进行
    2,按钮全选,反选,和取消全选,可以用一个函数写,传入不同的参数AllBybtn(num)类型即可
    函数里面 根据js的特性 非0 和 0 这两种状态,进行设置,为了同步,需要分别进行设置
    3,为了显示出当全部选中就默认全选的复选框选中,所以需要对每一个复选框进行设置,采用函数checkBysingle()进行设置
    4,删除所选项是需要主要,当前的是checkbox对象,上一级是td--tr--先拿到tr对象,然后对通过tr的父节点删除tr对象
      再删除之后,x会变化,可能有些删不到,所以需要将X的值还原,或者从后面开始删除
  -->
  <title>Mail.html</title>
    <style type="text/css">
      .one{
        background-color:#00ff80;
      }
      .two{
        background-color:#80ff00;
      }
      .three{
        background-color:#0000ff;
      }
      table th{
        background-color:#c0c0c0;
      }
      table{
        width:400px;
        border:solid 1px;
      }
      table tr{
        height:50px;
      }
    </style>
    <script type="text/javascript">
        var name;
        function toaddcolor(){
          //颜色设置,
          var nodes = document.getElementById("tabid");
          var rows1 = nodes.rows;
          for (var x = 1; x < rows1.length; x++) {
            if (x % 2 == 0) {
              rows1[x].className = "one";
            }
            else {
              rows1[x].className = "two";
            }
          }
        }
          function addEvent(){
            var name;
            //当鼠标移上去之后发生相应的变化
            var nodes=document.getElementById("tabid");
            var rows1=nodes.rows;
            for (var x = 1; x < rows1.length; x++) {
            rows1[x].onmouseover = function(){
              name = this.className;
              this.className = "three";
            }
            rows1[x].onmouseout = function(){
              this.className = name;
            } 

//             alert("bb");
//             alert(rows1[x].getElementsByTagName("input")[0].nodeName);
            rows1[x].getElementsByTagName("input")[0].onclick=function(){//每一行的input对象
              document.getElementsByName("allItem")[0].indeterminate=true;//让全选的复选框形状发生变化
            }
          }
        }
        onload=function(){//在网页加载时候调用
          toaddcolor();
          addEvent();
        }
        function allcheck(nodes){//全选checkbox的点击调用这个
          var nodess=document.getElementsByName("mail");
          for(var x=0;x<nodess.length;x++){
            nodess[x].checked=nodes.checked;
          }
          //多个全选的时候,必须和其他的一个一样
          var nodes1=document.getElementsByName("allItem");
          for(var x=0;x<nodes1.length;x++){
            nodes1[x].checked=nodes.checked;
          }
        }
        function AllBybtn(num){//全选按钮设置
          var nodess = document.getElementsByName("mail");
          /*多重for 循环不太好,可以根据js里面的特性0  非0
           for (var x = 0; x < nodess.length; x++) {
            if (num == 1) {
              nodess[x].checked = 1;
            }else if (num == 2) {
                nodess[x].checked = !nodess[x].checked;
              }else if (num == 3) {
                  nodess[x].checked = false;
                }
          }*/
          for(var x=0;x<nodess.length;x++){
            if(num<2){
              nodess[x].checked=num;
                //让全选的复选框可以 单独写个函数
                var all=document.getElementsByName("allItem");
                for(var y=0;y<all.length;y++){
                  if(num==1){
                  all[y].checked=num;
                }else{
                  all[y].checked=num;
                }
              }
            }else{
              nodess[x].checked=!nodess[x].checked;
              var all=document.getElementsByName("allItem");
                for (var y = 0; y < all.length; y++) {
                  all[y].checked=0;
                }
            }
          }
        } 

        function checkBysingle(){//全部入选之后,全选的自动选中
          var flag = true;
          var node = document.getElementsByName("mail");
          for (var x = 0; x < node.length; x++) {
            if (node[x].checked == false) {
              flag = false;
              break;
            }
          } 

          var all = document.getElementsByName("allItem");
          for (var y = 0; y < all.length; y++) {
            if (flag) {
              all[y].checked = true;
            }
            else {
              all[y].checked = false;
            }}} 

      function DelBybtn(){//删除行
        var tdnode=document.getElementsByName("mail");
          /*for(var x=0;x<tdnode.length;x++){
          if(tdnode[x].checked){//对象是 checkbox 我们必须要那父级的父级 《tr》,我们需要移除的就是tr对象
             var trnode=tdnode[x].parentNode.parentNode;//tr对象
             trnode.parentNode.removeChild(trnode);//table对象移除tr对象
          // alert("aa");
          //节点容器跟Java当中的集合一样,只要是remove(),长度就会变的。这里,需要进行x的复位
            x--;
          }*/ 

          for(var x=tdnode.length-1;x>=0;x--){
            if(tdnode[x].checked){//对象是 checkbox 我们必须要那父级的父级 《tr》,我们需要移除的就是tr对象
             var trnode=tdnode[x].parentNode.parentNode;//tr对象
             trnode.parentNode.removeChild(trnode);//table对象移除tr对象
          }
          toaddcolor();
          addEvent();
        }
      }
    </script>
 </head> 

 <body>
  <table id="tabid">
    <tr> <th><input type="checkbox" name="allItem" onclick="allcheck(this)"/> 全选 </th> <th>发件人</th> <th>邮件标题</th> <th>邮件附属信息</th></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>张三</td> <td>国庆祝福</td> <td>邮件附属信息1....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Jack</td> <td>假期堵车</td> <td>邮件附属信息2....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Jack</td> <td>假期堵车</td> <td>邮件附属信息3....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Jack</td> <td>假期堵车</td> <td>邮件附属信息4....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Jack</td> <td>假期堵车</td> <td>邮件附属信息5....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Tom</td> <td>一些广告</td> <td>邮件附属信息6....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Tom</td> <td>一些广告</td> <td>邮件附属信息6....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Tom</td> <td>一些广告</td> <td>邮件附属信息6....</td></tr>
    <tr> <td><input type="checkbox" name="mail" onclick="checkBysingle(this)" /> </td> <td>Tom</td> <td>一些广告</td> <td>邮件附属信息6....</td></tr>
    <tr><td><input type="checkbox"  name="allItem" onclick="allcheck(this)">全选</td>
      <td colspan=3><input type="button" value="全选" name="btn1" onclick="AllBybtn(1)" />
      <input type="button" value="反选" name="btn2" onclick="AllBybtn(2)"/>
      <input type="button" value="取消全选" name="btn3" onclick="AllBybtn(0)"/>
      <input type="button" value="删除所选项" name="btn4" onclick="DelBybtn()"/> 

      </td>
    </tr>
  </table>
 </body>
</html> 

希望本文所述对大家学习javascript程序设计有所帮助。

(0)

相关推荐

  • 简单几行JS Code实现IE邮件转发新浪微博

    最近刚开通新浪围脖,突发奇想,想做个浏览器插件实现文字新闻等的转发围脖的插件.本以为应该用C++写个插件的(c#那么大个壳有时真的让人头疼),但是google了一下,手气真的不错,搜到了,几篇关于IE插件的开发.用的Javascript,和添加注册表就可以完全搞定.插件用javascript写那就不用多说,浏览器本身就支持的,不用额外安装.添加注册表手动可以添加,但是麻烦所以写了一个批处理搞定. 1:添加注册表:HKEY_CURRENT_USER\Software\Microsoft\Inter

  • JS验证邮件地址格式方法小结

    本文实例讲述了JS验证邮件地址格式方法.分享给大家供大家参考,具体如下: 示例1: 复制代码 代码如下: <asp:TextBox ID="txt_Email" runat="server" onblur="checkRate(this.id)"></asp:TextBox> function checkRate(input) { var re = /^[_".0-9a-z-]+@([0-9a-z][0-9a-z

  • Nodejs中读取中文文件编码问题、发送邮件和定时任务实例

    关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了. 下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后续其它的也需要这么做): 复制代码 代码如下: npm install -g iconv-lite npm install -g nodemailer npm install -g node-schedule 1.nodejs读取中文文件编码问题 准备一个文本文件(当然也可以是csv文件等)test

  • 基于Node.js实现nodemailer邮件发送

    Nodemailer是一个简单易用的Node.js邮件发送组件,具体操作如下 1.安装nodemailer npm install nodemailer --save 2.特点 Nodemailer的主要特点包括: 支持Unicode编码 支持Window系统环境 支持HTML内容和普通文本内容 支持附件(传送大附件) 支持HTML内容中嵌入图片 支持SSL/STARTTLS安全的邮件发送 支持内置的transport方法和其他插件实现的transport方法 支持自定义插件处理消息 支持XOA

  • 利用Node.JS实现邮件发送功能

    第一步.配置篇 首先需要安装nodemailer库 npm install nodemailer//默认会安装最新的版本. 关于这个库的文档参见nodemailer 第二步.库的一些使用介绍 这个库使用方法很简单的.首先是要创建一个用于发送邮件的实例 var transporter = nodemailer.createTransport(transport[, defaults]) transport参数属性 属性太多了就只写一些关键的属性 port:连接的端口号,一般就是465 host:你

  • js正则表达式验证邮件地址

    我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有的还能分解出用户名和域名.现在用JavaScript语言实现一下电子邮件地址验证程序,用的是JavaScript语言的正则表达式库. 效果图: 不合法的情况: 合法的情况: 源代码如下,该网页已在IE.Firefox.Chrome上验证通过: <!DOCTYPE html PUBLIC "-/

  • 纯javascript实现自动发送邮件

    描述: 此JavaScript将帮助你的电子邮件的人.只要按一下电子邮件,有人!和JavaScript会要求的电子邮件地址,主题,等等然后你,新的邮件,是向你打开了. <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function mailsome1(){ who=prompt("Enter recipient's email address: ","antispammer@earthling.net

  • node.js使用nodemailer发送邮件实例

    一.安装 nodemailer 复制代码 代码如下: npm install nodemailer --save 二.调用 复制代码 代码如下: var nodemailer = require("nodemailer"); // 开启一个 SMTP 连接池var smtpTransport = nodemailer.createTransport("SMTP",{  host: "smtp.qq.com", // 主机  secureConne

  • 用JS输入email的代码,以防垃圾邮件

    我们经常遇到在网页中放置Email的时候,如果写上真实的邮箱就会引来垃圾邮箱搜索引擎的骚扰,那么可以用这个JS来实现不被搜索到,与直接输入一样的展示方法! ' a+='lto:' b+='@' e='' d='联系站长' b+='e165.com' document.write(a+b+c+d+e) } aiawfni1fe1() //--> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • javascript验证邮件地址和MX记录的方法

    本文实例讲述了javascript验证邮件地址和MX记录的方法.分享给大家供大家参考.具体如下: // Tests for a valid email address and optionally tests for valid MX records, too. function is_valid_email($email, $test_mx = false) { if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+

随机推荐