首页 > 语言 > JavaScript > 正文

纯原生js实现table表格的增删

2024-05-06 15:03:27
字体:
来源:转载
供稿:网友

公司实习生问我table的增删操作,用jQuery很简单的实现了。又问我不使用jQuery,只使用js如何实现。

面对这种情况,我的一贯做法是‘不理解,但是支持'。

jQuery用的多了,人也懒了,但还是用js实现了这一操作,觉得难点在于IE兼容。。。

只是想找代码看看的可以跳过分析过程,文章底部附有完整代码。

以下是coding过程:

HTML结构代码

一个基本的table结构,增加了一些简单的样式,三个按钮分别对应创建、清空,和一个预留。

<!DOCTYPE HTML> <html>  <head>  <title>table</title>  <meta charset='utf-8' />  <style type="text/css">  table.base{  border-collapse:collapse;  text-align: center;  border: 1px solid black;  }  table, tr, td, th{  border: 1px solid black;  }  </style>  </head>  <body>  <div id="main-content">  <table id="main-table" class="base">  <thead>   <tr>   <th colspan="3">This is a table for operations by javascript</th>   </tr>   <tr>   <th>   <input type="button" value="CREATE" id="cp_btn" onclick="createTr()" />   </th>   <th>   <input type="button" value="CLEAR" id="cl_btn" onclick="clearTrs()" />   </th>   <th>   <input type="button" value="GUESS" id="cl_btn"/>   </th>   </tr>  </thead>  <tbody>  </tbody>  </table>  </div>  </body> </html> 

构造函数(伪构造函数)

考虑过,创建一个隐藏的tr,基于此tr执行创建操作。为了不破坏HTML整体结构,决定通过js生成tr对象并append到页面中。

为了在页面加载完成后,再执行dom操作,所以将<script>放在代码下端</body>之前。

基于table中的tbody进行增删操作,可以先声明此全局变量

var vTbody = document.getElementById('main-table').getElementsByTagName('tbody')[0]; 

创建对象,可以使用document.createElement方法。

以面向对象的方式进行编程,先写构造函数(其实并不是标准的构造函数格式),从最内部的元素开始。

td中可能会有text和button等表单元素,所以先创建一个 input 的构造函数function myInput(vId, vClass, vType, vValue, vParent){}

这里有一个兼容性问题,就是IE内核不支持setAttribute(class, value),需要使用setAttribute(className, value),所以为了解决兼容问题,可以通过

setAttribute(class, value) for FF、Chrome..

setAttribute(className, value) for IE

这里采用的是另一种方式 .className,代码如下:

function myInput(vId, vClass, vType, vValue, vParent) {  var vInput = document.createElement('input');  if(vId) {  vInput.setAttribute('id', vId);  }  vInput.setAttribute('type', vType);  vInput.setAttribute('value', vValue);  vInput.className = vClass;  if(vParent) {  vParent.appendChild(vInput);  } }             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选