js操作table示例(个人心得)


Posted in Javascript onNovember 29, 2013

记得以前面试的时候遇到过这样一个问题:有一个表格,然后有4个输入框,一个合并按钮,输入框是这样的,从第几行到第几行,从第几列到第几列,然后点击按钮,合并 。当时我从学校出来,js知识只是知道一些,根本做不到!现在想想,其实这个问题也还是考基础功夫是否扎实!大家有兴趣可以自己做做看,测下自己是不是能够做出来。题目的截图:
js操作table示例(个人心得) 
现在做这个问题,看起来简单,但我还是花了很长时间,可能是我的思路不对吧?主要就是用js来操作html,我现在实现了添加行,删除行,添加列,删除列 ,但合并单元格却不能完整的实现 ,主要是表格会乱掉 。现在把这个问题发出来,有兴趣的同仁可以自己在有空的时候研究下,看自己能不能做出来!主要是合并单元格的问题!也可以帮我看看合并单元格的问题。

我自己实现的部分代码:
html部分 写道

<body onLoad="init();"> <table id="table" align="center"> 
<tbody id="newbody"></tbody> 
</table> 
<div> 
<table width="800px" border="1px" align="center"> 

<tr><td align="center"><input type="button" id="addRow" name="addRow" onClick="addRow();" value="添加行"/></td> 


<td align="center"><input type="button" id="delRow" name="delRow" onClick="removeRow();" value="删除行"/></td> 

</tr> 

<tr><td align="center"><input type="button" id="delCell" name="delCell" onClick="removeCell();" value="删除列"/></td> 


<td align="center"><input type="button" id="addCell" name="addCell" onClick=" addCell();" value="添加列"/></td> 
 </tr> 
 <tr><td align="center" colspan="2"><input type="button" id="addRows" name="addRows" onClick="addRow_withInsert();" value="添加行"/></td></tr> 
</table> 
</div> 
<div> 
<table width="800px" border="1px" align="center"> 

 <tr><td>从第<input type="text" id="beginRow" name="beginRow" value=""/> 行到
 <input type="text" name="endRow" id="endRow" value=""/> 行</td><td rowspan="2" id="test"><input type="button" name="hebing" id="hebing" value="合并" onClick="rebulid();"/> </td></tr> 

<tr><td>从第<input type="text" name="beginCol" id="beginCol" value=""/> 列到<input type="text" name="endCol" id="endCol" value=""/> 列</td></tr> 
</table> 
</div> 
</body>

生成表格,采用appendChild 写道
function init(){ 
_table=document.getElementById ("table"); 
_table.border="1px"; 
_table.width="800px"; for(var i=1;i<10;i++){ 

var row=document.createElement ("tr"); 

row.id=i; 

for(var j=1;j<6;j++){ 

 var cell=document.createElement ("td"); 

 cell.id =i+"/"+j; 

 cell.appendChild(document.createTextNode ("第"+cell.id+"列")); 

 row.appendChild (cell); 

} 

document.getElementById("newbody").appendChild (row); 
 } 
}

添加行,使用appendChild方法 写道
function addRow(){ 
var length=document.getElementById("table").rows.length; 
/*document.getElementById("newbody").insertRow(length); 
document.getElementById(length+1).setAttribute("id",length+2);*/ 

var tr=document.createElement("tr"); 

tr.id=length+1; 

var td=document.createElement("td"); 

for(i=1;i<4;i++){ 


td.id=tr.id+"/"+i; 


td.appendChild(document.createTextNode("第"+td.id+"列")); 


tr.appendChild(td); 

} 

document.getElementById("newbody").appendChild (tr); 
}

添加行的另一种方法insertRow 写道
function addRow_withInsert(){ 
 varrow=document.getElementById("table").insertRow( document.getElementById("table").rows.length); 
 var rowCount =document.getElementById("table").rows.length; 
 var countCell=document.getElementById("table").rows.item(0).cells.length; 
 for(var i=0;i<countCell;i++){ 

 var cell=row.insertCell(i); 

 cell.innerHTML="新"+(rowCount)+"/"+(i+1)+"列"; 

 cell.id=(rowCount)+"/"+(i+1); 

} 
}

删除行,采用deleteRow(row Index) 写道
/*删除行,采用deleteRow(row Index)*/ 
function removeRow(){ 
/* var row=document.getElementById("2"); 
var index=row.rowIndex; 

alert(index);*/ 

 document.getElementById("newbody").deleteRow(document.getElementById(document.getElementById("table").rows.length).rowIndex); 
}

添加列,采用insertCell(列位置)方法 写道
function addCell(){ 
/*document.getElementById("table").rows.item(0).cells.length 
用来获得表格的列数 
*/ 
for(var i=0;i<document.getElementById("table").rows.length;i++){ 
var cell=document.getElementById("table").rows[i].insertCell(2); 

cell.innerHTML="第"+(i+1)+"/"+3+"列"; 
} 
}

删除列,采用deleteCell(列位置)的方法 写道
/*删除列,采用deleteCell(列位置)的方法*/ 
function removeCell(){ 
for(var i=0;i<document.getElementById("table").rows.length;i++){ 


document.getElementById("table").rows[i].deleteCell(0); 

} 
}

合并单元格(未实现) 写道
我的代码有问题,主要是表格会乱掉,一直没有改好 :
function rebulid(){ 
var beginRow=document.getElementById("beginRow").value;/*开始行*/ 
var endRow=document.getElementById("endRow").value;/*结束行*/ var beginCol=document.getElementById("beginCol").value;/*开始列*/ 
var endCol=document.getElementById("endCol").value;/*结束列*/ 
var tempCol=beginRow+"/"+beginCol;/*定位要改变属性的列*/ 
alert(tempCol); 
var td=document.getElementById(tempCol); 
/*删除要合并的单元格*/ 
for(var x=beginRow;x<=endRow;x++){ 

for(var i=beginCol;i<=endCol;i++){ 


if(x==beginRow){ 



document.getElementById("table").rows[x].deleteCell(i+1); 


} 


else{ 



document.getElementById("table").rows[x].deleteCell(i); 


} 

 } 

} 

 td.rowSpan=(endRow-beginRow)+1; 
}
Javascript 相关文章推荐
js实现编辑div节点名称的方法
Dec 17 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 Javascript
基于jquery实现瀑布流布局
Jun 28 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
May 02 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
js指定日期增加指定月份的实现方法
Dec 19 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
vue实现倒计时功能
Mar 24 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
css配合jquery美化 select
Nov 29 #Javascript
Jjcarousellite 实现图片列表滚动的简单实例
Nov 29 #Javascript
JS实现多物体缓冲运动实例代码
Nov 29 #Javascript
JS实现匀速运动的代码实例
Nov 29 #Javascript
JS实现侧悬浮浮动实例代码
Nov 29 #Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 #Javascript
JS实现日期加减的方法
Nov 29 #Javascript
You might like
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
Python中字符串对齐方法介绍
2015/05/21 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
android面试问题与答案
2016/12/27 面试题
大学生自我评价怎样写好
2013/10/23 职场文书
军训心得体会
2013/12/31 职场文书
公司管理建议书范文
2014/03/12 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
建材投资建议书
2014/05/16 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
成都人事代理协议书
2014/10/25 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
php 原生分页
2021/04/01 PHP
Python数据类型最全知识总结
2021/05/31 Python
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python