广告
返回顶部
首页 > 资讯 > 精选 >js+Html如何实现表格可编辑操作
  • 600
分享到

js+Html如何实现表格可编辑操作

2023-06-14 19:06:02 600人浏览 泡泡鱼
摘要

这篇文章主要介绍了js+html如何实现表格可编辑操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。功能描述:单击页面使单元格td变成可编辑状态,输入内容后,当单元格失去焦点

这篇文章主要介绍了js+html如何实现表格可编辑操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

功能描述:单击页面使单元格td变成可编辑状态,输入内容后,当单元格失去焦点时,保存输入的内容。
点击增加行,在table的末尾增加一行;点击删除行,删除table中最末尾的一行。     

<html>      <head>      <meta Http-equiv="Content-Type" content="text/html; charset=UTF-8" />      <title>编辑表格数据</title>      <style type="text/CSS">      <!--      body,div,p,ul,li,font,span,td,th{      font-size:10pt;      line-height:155%;      }      table{      border-top-width: 1px;      border-right-width: 1px;      border-bottom-width: 0px;      border-left-width: 1px;      border-top-style: solid;      border-right-style: solid;      border-bottom-style: none;      border-left-style: solid;      border-top-color: #CCCCCC;      border-right-color: #CCCCCC;      border-bottom-color: #CCCCCC;      border-left-color: #CCCCCC;      }      td{      border-bottom-width: 1px;      border-bottom-style: solid;      border-bottom-color: #CCCCCC;      }      .EditCell_TextBox {      width: 90%;      border:1px solid #0099CC;      }      .EditCell_DropDownList {      width: 90%;      }      -->      </style>      <script>                    //设置多个表格可编辑      function EditTables(){      for(var i=0;i<arguments.length;i++){         SetTableCanEdit(arguments[i]);      }      }            //设置表格是可编辑的      function SetTableCanEdit(table){      for(var i=1; i<table.rows.length;i++){         SetRowCanEdit(table.rows[i]);      }      }            function SetRowCanEdit(row){      for(var j=0;j<row.cells.length; j++){               //如果当前单元格指定了编辑类型,则表示允许编辑         var editType = row.cells[j].getAttribute("EditType");         if(!editType){          //如果当前单元格没有指定,则查看当前列是否指定          editType = row.parentnode.rows[0].cells[j].getAttribute("EditType");         }         if(editType){          row.cells[j].onclick = function (){           EditCell(this);          }         }      }            }            //设置指定单元格可编辑      function EditCell(element, editType){            var editType = element.getAttribute("EditType");      if(!editType){         //如果当前单元格没有指定,则查看当前列是否指定         editType = element.parentNode.parentNode.rows[0].cells[element.cellIndex].getAttribute("EditType");      }            switch(editType){         case "TextBox":          CreateTextBox(element, element.innerHTML);          break;         case "DropDownList":          CreateDropDownList(element);          break;         default:          break;      }      }            //为单元格创建可编辑输入框      function CreateTextBox(element, value){      //检查编辑状态,如果已经是编辑状态,跳过      var editState = element.getAttribute("EditState");      if(editState != "true"){         //创建文本框         var textBox = document.createElement("INPUT");         textBox.type = "text";         textBox.className="EditCell_TextBox";                         //设置文本框当前值         if(!value){          value = element.getAttribute("Value");         }           textBox.value = value;                 //设置文本框的失去焦点事件         textBox.onblur = function (){          CancelEditCell(this.parentNode, this.value);         }         //向当前单元格添加文本框         ClearChild(element);         element.appendChild(textBox);         textBox.focus();         textBox.select();                 //改变状态变量         element.setAttribute("EditState", "true");         element.parentNode.parentNode.setAttribute("CurrentRow", element.parentNode.rowIndex);      }            }                  //为单元格创建选择框      function CreateDropDownList(element, value){      //检查编辑状态,如果已经是编辑状态,跳过      var editState = element.getAttribute("EditState");      if(editState != "true"){         //创建下接框         var downList = document.createElement("Select");         downList.className="EditCell_DropDownList";                 //添加列表项         var items = element.getAttribute("Dataitems");         if(!items){          items = element.parentNode.parentNode.rows[0].cells[element.cellIndex].getAttribute("DataItems");         }                 if(items){          items = eval("[" + items + "]");          for(var i=0; i<items.length; i++){           var oOption = document.createElement("OPTION");           oOption.text = items[i].text;           oOption.value = items[i].value;           downList.options.add(oOption);          }         }                 //设置列表当前值         if(!value){          value = element.getAttribute("Value");         }         downList.value = value;               //设置创建下接框的失去焦点事件         downList.onblur = function (){          CancelEditCell(this.parentNode, this.value, this.options[this.selectedIndex].text);         }                 //向当前单元格添加创建下接框         ClearChild(element);         element.appendChild(downList);         downList.focus();                 //记录状态的改变         element.setAttribute("EditState", "true");         element.parentNode.parentNode.setAttribute("LastEditRow", element.parentNode.rowIndex);      }            }                  //取消单元格编辑状态      function CancelEditCell(element, value, text){      element.setAttribute("Value", value);      if(text){         element.innerHTML = text;      }else{         element.innerHTML = value;      }      element.setAttribute("EditState", "false");            //检查是否有公式计算      CheckExpression(element.parentNode);      }            //清空指定对象的所有字节点      function ClearChild(element){      element.innerHTML = "";      }            //添加行      function AddRow(table, index){      var lastRow = table.rows[table.rows.length-1];      var newRow = lastRow.cloneNode(true);      //计算新增加行的序号,需要引入Jquery 的jar包    var startIndex = $.inArray(lastRow,table.rows);    var endIndex = table.rows;     table.tBodies[0].appendChild(newRow);      newRow.cells[0].innerHTML=endIndex-startIndex;    SetRowCanEdit(newRow);      return newRow;            }                  //删除行      function DeleteRow(table, index){      for(var i=table.rows.length - 1; i>0;i--){         var chkOrder = table.rows[i].cells[0].firstChild;         if(chkOrder){          if(chkOrder.type = "CHECKBOX"){           if(chkOrder.checked){            //执行删除            table.deleteRow(i);           }          }         }      }      }            //提取表格的值,JSON格式      function GetTableData(table){      var tableData = new Array();      alert("行数:" + table.rows.length);      for(var i=1; i<table.rows.length;i++){         tableData.push(GetRowData(tabproduct.rows[i]));      }            return tableData;            }      //提取指定行的数据,JSON格式      function GetRowData(row){      var rowData = {};      for(var j=0;j<row.cells.length; j++){         name = row.parentNode.rows[0].cells[j].getAttribute("Name");         if(name){          var value = row.cells[j].getAttribute("Value");          if(!value){           value = row.cells[j].innerHTML;          }                   rowData[name] = value;         }      }      //alert("ProductName:" + rowData.ProductName);      //或者这样:alert("ProductName:" + rowData["ProductName"]);      return rowData;            }            //检查当前数据行中需要运行的字段      function CheckExpression(row){      for(var j=0;j<row.cells.length; j++){         expn = row.parentNode.rows[0].cells[j].getAttribute("Expression");         //如指定了公式则要求计算         if(expn){          var result = Expression(row,expn);          var fORMat = row.parentNode.rows[0].cells[j].getAttribute("Format");          if(format){           //如指定了格式,进行字值格式化           row.cells[j].innerHTML = formatNumber(Expression(row,expn), format);          }else{           row.cells[j].innerHTML = Expression(row,expn);          }         }              }      }            //计算需要运算的字段      function Expression(row, expn){      var rowData = GetRowData(row);      //循环代值计算      for(var j=0;j<row.cells.length; j++){         name = row.parentNode.rows[0].cells[j].getAttribute("Name");         if(name){          var reg = new RegExp(name, "i");          expn = expn.replace(reg, rowData[name].replace(/\,/g, ""));         }      }      return eval(expn);      }            ///                  function formatNumber(num,pattern){        var strarr = num?num.toString().split('.'):['0'];        var fmtarr = pattern?pattern.split('.'):[''];        var retstr='';                // 整数部分        var str = strarr[0];        var fmt = fmtarr[0];        var i = str.length-1;          var comma = false;        for(var f=fmt.length-1;f>=0;f--){            switch(fmt.substr(f,1)){              case '#':                if(i>=0 ) retstr = str.substr(i--,1) + retstr;                break;              case '0':                if(i>=0) retstr = str.substr(i--,1) + retstr;                else retstr = '0' + retstr;                break;              case ',':                comma = true;                retstr=','+retstr;                break;            }        }        if(i>=0){            if(comma){              var l = str.length;              for(;i>=0;i--){                retstr = str.substr(i,1) + retstr;                if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;               }            }            else retstr = str.substr(0,i+1) + retstr;        }                retstr = retstr+'.';        // 处理小数部分        str=strarr.length>1?strarr[1]:'';        fmt=fmtarr.length>1?fmtarr[1]:'';        i=0;        for(var f=0;f<fmt.length;f++){            switch(fmt.substr(f,1)){              case '#':                if(i<str.length) retstr+=str.substr(i++,1);                break;              case '0':                if(i<str.length) retstr+= str.substr(i++,1);                else retstr+='0';                break;            }        }        return retstr.replace(/^,+/,'').replace(/\.$/,'');        }      </script>    </head>            <body>      <form id="form1" name="form1" method="post" action="">      <h4>可编辑的表格</h4>      <table width="698" border="0" cellpadding="0" cellspacing="0" id="tabProduct">          <tr>            <td width="32" align="center" bGColor="#EFEFEF" Name="Num"><input type="checkbox" name="checkbox" value="checkbox" /></td>            <td width="186" bgcolor="#EFEFEF" Name="Num" EditType="TextBox">序号</td>            <td width="152" bgcolor="#EFEFEF" Name="ProductName" EditType="DropDownList" DataItems="{text:'A',value:'a'},{text:'B',value:'b'},{text:'C',value:'c'},{text:'D',value:'d'}">商品名称</td>            <td width="103" bgcolor="#EFEFEF" Name="Amount" EditType="TextBox">数量</td>            <td width="103" bgcolor="#EFEFEF" Name="Price" EditType="TextBox">单价</td>            <td width="120" bgcolor="#EFEFEF" Name="SumMoney" Expression="Amount*Price" Format="#,###.00">合计</td>          </tr>          <tr>            <td align="center" bgcolor="#FFFFFF"><input type="checkbox" name="checkbox2" value="checkbox" /></td>            <td bgcolor="#FFFFFF">1</td>            <td bgcolor="#FFFFFF" Value="c">C</td>            <td bgcolor="#FFFFFF">0</td>            <td bgcolor="#FFFFFF">0</td>            <td bgcolor="#FFFFFF">0</td>          </tr>          <tr>            <td align="center" bgcolor="#FFFFFF"><input type="checkbox" name="checkbox22" value="checkbox" /></td>            <td bgcolor="#FFFFFF">2</td>            <td bgcolor="#FFFFFF" Value="d">D</td>            <td bgcolor="#FFFFFF">0</td>            <td bgcolor="#FFFFFF">0</td>            <td bgcolor="#FFFFFF">0</td>          </tr>      </table>            <br />      <input type="button" name="Submit" value="新增" onclick="AddRow(document.getElementById('tabProduct'),1)" />      <input type="button" name="Submit2" value="删除" onclick="DeleteRow(document.getElementById('tabProduct'),1)" />      <input type="button" name="Submit22" value="重置" onclick="window.location.reload()" />      <input type="submit" name="Submit3" value="提交" onclick="GetTableData(document.getElementById('tabProduct'));return false;" />      </form>            <script language="javascript" src="GridEdit.js"></script>      <script language="javascript">      var tabProduct = document.getElementById("tabProduct");            // 设置表格可编辑      // 可一次设置多个,例如:EditTables(tb1,tb2,tb2,......)      EditTables(tabProduct);                  </script>      </body>  </html>

效果如下:

js+Html如何实现表格可编辑操作

感谢你能够认真阅读完这篇文章,希望小编分享的“js+Html如何实现表格可编辑操作”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: js+Html如何实现表格可编辑操作

本文链接: https://www.lsjlt.com/news/274273.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • js+Html实现表格可编辑操作
    本文实例为大家分享了js+Html实现表格可编辑操作的具体代码,供大家参考,具体内容如下 功能描述:单击页面使单元格td变成可编辑状态,输入内容后,当单元格失去焦点时,保存输入的内容...
    99+
    2022-11-12
  • js+Html如何实现表格可编辑操作
    这篇文章主要介绍了js+Html如何实现表格可编辑操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。功能描述:单击页面使单元格td变成可编辑状态,输入内容后,当单元格失去焦点...
    99+
    2023-06-14
  • vue中用js如何实现循环可编辑表格
    目录vue用js实现循环可编辑表格表格的需求简单总结一下就是vue用js实现循环可编辑表格 最近项目中需要实现一个很复杂的表格,尝试用组件写,半天写不出来,循环真的好绕,最后直接求助...
    99+
    2022-11-13
  • element-ui表格如何实现单元格可编辑
    这篇文章主要介绍element-ui表格如何实现单元格可编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如下所示:<template>  <el-tab...
    99+
    2022-10-19
  • Vue中table如何实现动态表格td可编辑
    这篇文章主要介绍Vue中table如何实现动态表格td可编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!项目中需求用到可编辑表格下图这种 ↓element UI 组件table表格...
    99+
    2022-10-19
  • jQuery如何实现可编辑表格并生成json结果
    这篇文章给大家分享的是有关jQuery如何实现可编辑表格并生成json结果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果如下,在编辑表格的同时可以实现字段json内容的自...
    99+
    2022-10-19
  • PHP+Ajax如何实现表格实时编辑
    这篇文章主要介绍PHP+Ajax如何实现表格实时编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如果我们的对于一个表格中所有的数据都能在本页进行操作那该是多酷炫的一件事!用Ajax就可以实现这个功能啦。废话不多说,...
    99+
    2023-06-08
  • js实现添加删除表格操作
    本文实例为大家分享了js实现添加删除表格的具体代码,供大家参考,具体内容如下 效果: 1、点击添加按钮 往table中添加一行  将全选前面的复选框变成false 1.1....
    99+
    2022-11-12
  • elementUI如何实现table单元格可编辑
    这篇文章主要介绍了elementUI如何实现table单元格可编辑,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先上效果:APP.vue:&...
    99+
    2022-10-19
  • 关于Element-UI可编辑表格的实现过程
    目录一、 可编辑单元格的实现二、 Input框编辑时动态查询(下拉列表)三、 点击图标显示下拉、点击图标显示Dialog的实现一、 可编辑单元格的实现 实现效果:点击可编辑 实现原...
    99+
    2022-11-13
  • Vue如何封装可编辑表格插件
    这篇文章给大家分享的是有关Vue如何封装可编辑表格插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。可任意合并表头,实现单元格编辑。页面效果如图:页面使用如下:<templ...
    99+
    2022-10-19
  • antdvue表格可编辑单元格以及求和实现方式
    目录antd vue表格可编辑单元格以及求和实现antd vue 表格可编辑问题总结antd vue表格可编辑单元格以及求和实现 1、参照官网根据自己需要添加可编辑单元格组件 新建E...
    99+
    2023-05-17
    antd vue表格可编辑单元格 antd vue表格求和 antd vue表格可编辑
  • js如何实现单击可修改表格
    小编给大家分享一下js如何实现单击可修改表格,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!js的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件做出...
    99+
    2023-06-14
  • js动态实现表格添加和删除操作
    本文实例为大家分享了js动态实现表格添加和删除的具体代码,供大家参考,具体内容如下 运行效果如图(两种实现方案,被注释的是第一种实现方案) 代码: <!DOCTYPE h...
    99+
    2022-11-12
  • JQuery如何实现动态操作表格
    这篇文章给大家分享的是有关JQuery如何实现动态操作表格的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近要做的东西,是对一个表格动态的添加行,删除行,并且对表格中内容进行非空...
    99+
    2022-10-19
  • 如何使用PHP实现表格的直接编辑功能
    随着互联网技术的快速发展,Web 应用的应用范围越来越广泛。Web 应用提供的数据展示和数据收集功能对许多企业和个人的运营和管理起到了重要的作用。表格数据的展示和收集是 Web 应用中最常见的功能之一。在这个过程中,编辑表格数据的功能是必不...
    99+
    2023-05-14
  • 图形编辑器中JS实现防误操作之拖拽阻塞
    目录图形编辑器中代码改造结尾图形编辑器中 在图形编辑器中,想象这么一个场景,我们撤销了一些重要的操作,然后想选中一个图形,看看它的属性。你点了上去,然后你发现你再也无法重做了。 你...
    99+
    2023-03-06
    JS 拖拽阻塞 JS 防误操作 JS图形编辑器
  • jquery如何实现元素可编辑
    本篇内容主要讲解“jquery如何实现元素可编辑”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何实现元素可编辑”吧! ...
    99+
    2022-10-19
  • js如何实现添加删除表格
    这篇文章给大家分享的是有关js如何实现添加删除表格的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图:代码如下:<!DOCTYPE html> <h...
    99+
    2022-10-19
  • JS如何实现表格隔行变色
    这篇文章主要为大家展示了“JS如何实现表格隔行变色”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现表格隔行变色”这篇文章吧。具体内容如下用到的鼠标事件:(1)鼠标经过 onmouseo...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作