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 相关文章推荐
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
IE、FF浏览器下修改标签透明度
Jan 28 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
Vue数据驱动模拟实现1
Jan 11 Javascript
在页面中引入js的两种方法(推荐)
Aug 29 Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 Javascript
Vuejs实现购物车功能
Nov 05 Javascript
微信小程序实现流程进度的图样式功能
Jan 16 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 Javascript
vue如何使用async、await实现同步请求
Dec 09 Javascript
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编写的简单页面跳转功能实现代码
2013/11/27 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
序列化模块json代码实例详解
2020/03/03 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
python assert的用处示例详解
2019/04/01 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
python实现实时视频流播放代码实例
2020/01/11 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
工业学校毕业生自荐书
2014/01/03 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
技能培训通讯稿
2015/07/18 职场文书