JScript实现表格的简单操作


Posted in Javascript onAugust 15, 2017

本文实例为大家分享了JScript实现表格的简单操作,供大家参考,具体内容如下

实现思路:

1、添加时:获取当前列表的行数,在当前一行添加下一行;
2、用insertCell()方法添加一行,下标从0开始,
3、若要给新一行添加类型、响应事件,就用setAttribute()方法,类似于键值对,并用appendChild()方法将数据保存到新一行
4、删除时:获取需要删除行的当前行数this,然后获取父节点,把整一行删掉remove(),而不是单单删除某一行的单个数据
5、修改时:获取当前修改行的行数索引,点击修改时,把表格状态转换为文本格式,并把“修改”改为“确定”

实现代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style>
      table{
        border-top: 1px solid #ccc;
        border-left: 1px solid #ccc;
        width: 400px;
      }
      td,th{
        border-right:1px solid #ccc ;
        border-bottom: 1px solid #ccc;
      }
    </style>
    <script>
      function add(){
        var table = document.getElementById("order");
        var index = table.rows.length;//表格行数
        var row = table.insertRow(index);//插入一个行并返回新一行


        var c0 = row.insertCell(0);
        var b0 = document.createElement("input");
        b0.setAttribute("type","checkbox");
        b0.setAttribute("onclick","seclect("+index+")");
        b0.setAttribute("name","sel");
        c0.appendChild(b0);

        var c1 = row.insertCell(1);//在新一行插入一列,并返回新一列
        c1.innerHTML = prompt("请输入商品名称","");

        var c2 = row.insertCell(2);//在新一行插入一列,并返回新一列
        c2.innerHTML = prompt("输入数量","");

        var c3 = row.insertCell(3);//在新一行插入一列,并返回新一列
        c3.innerHTML = prompt("输入价格","");

        var c4 = row.insertCell(4);
        var b1 = document.createElement("input");
        b1.setAttribute("type","button");
        b1.setAttribute("value","删除");
        b1.setAttribute("onclick","del(this)");

        var b2 = document.createElement("input");//创建按钮
        b2.setAttribute("type","button");
        b2.setAttribute("value","修改");
        b2.setAttribute("style","margin-left: 5px");
        b2.setAttribute("onclick","update("+index+")");

        c4.appendChild(b1);//把按钮添加到操作的单元格中
        c4.appendChild(b2);
      }

      function del(but){
        //var table = document.getElementById("order");
        but.parentNode.parentNode.remove();//根据节点的层级关系删除行
      }

      function update(index){
        var table = document.getElementById("order");
        //获得修改按钮
        var cell=table.rows[index].cells[4];

        cell.lastChild.setAttribute("value","确定");
        //为按钮重新绑定事件
        cell.lastChild.setAttribute("onclick","edit("+index+")");

        //修改数量
        var cellNumer = table.rows[index].cells[2];
        var txt = document.createElement("input"); //创建一个文本框
        txt.setAttribute("value",cellNumer.innerHTML);//设置文本框的值
        txt.setAttribute("size",5);//文本框长度
        cellNumer.innerHTML = "";//把单元格的数据清除
        cellNumer.appendChild(txt); //把文本框加入到单元格
      }

      function edit(index){
        var table = document.getElementById("order");

        var cell = table.rows[index].cells[4];

        cell.lastChild.setAttribute("value","修改");
        cell.lastChild.setAttribute("onclick","update("+index+")");

        //把单元格中的文本框删除
        var cellNumer = table.rows[index].cells[2];
        var num = cellNumer.firstChild.value;//取文本框的值
        cellNumer.removeChild(cellNumer.firstChild);//删除文本框
        cellNumer.innerHTML = num;
      }

      function allSelect(ch){
        var item = document.getElementsByTagName("input"); //取所有的input标签
        for(var i=0;i<item.length;i++){ //循环每一个
          if(item[i].type==ch.type){ //判断每一个标签的类型是否为CheckBox
            item[i].checked = ch.checked; //复选框的选中与全选的复选框选中相同
          }
        }

      }
      function seclect(sh){
        var item = document.getElementsByName("sel"); 
        var all = document.getElementById("all");
        var tag = true;
        for(var i=0;i<item.length;i++){//判断是否全部选中
          if(item[i].checked == false){
            tag = false;
            break;
          }
        }
        all.checked = tag;
      }
    </script>
  </head>
  <body>
    <center>
      <table id="order" >
        <tr>
          <th>
            <input type="checkbox" onclick="allSelect(this)" id="all"/>全选
          </th>
            <th>商品名称</th>
            <th>数量</th>
            <th>单价</th>
            <th>操作</th>
          </tr>
        <tr>
          <td><input type="checkbox" onclick="seclect(this)" name="sel"/></td>
          <td>娃哈哈</td>
          <td>10</td>
          <td>2</td>
          <td><input value="删除" type="button" onclick="del(this)"style="margin-right:5px ;"/><input value="修改" type="button" onclick="update(1)"/></td>
        </tr>

      </table>
      <button onclick="add()">添加商品</button>
    </center>
  </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
readonly和disabled属性的区别
Jul 26 Javascript
JavaScript实现动态删除列表框值的方法
Aug 12 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
vue 通过下拉框组件学习vue中的父子通讯
Dec 19 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
小程序实现左右来回滚动字幕效果
Dec 28 Javascript
js实现打字小游戏
Dec 17 Javascript
Vue3新特性之在Composition API中使用CSS Modules
Jul 13 Javascript
AngularJS日程表案例详解
Aug 15 #Javascript
jQuery实现菜单栏导航效果
Aug 15 #jQuery
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 #Javascript
JScript实现地址选择功能
Aug 15 #Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 #jQuery
关于vue.js发布后路径引用的问题解决
Aug 15 #Javascript
JavaScript中使用Async实现异步控制
Aug 15 #Javascript
You might like
用PHP实现的随机广告显示代码
2007/06/14 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
反腐倡廉演讲稿
2014/05/22 职场文书
个人违纪检讨书
2014/09/15 职场文书
思想政治表现评语
2015/01/04 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
PHP使用QR Code生成二维码实例
2021/07/07 PHP