一组JS创建和操作表格的函数集合


Posted in Javascript onMay 07, 2009

stone.js
//**************************************神吹表格操作函数*******************************************************
//隐藏列
function setHiddenRow(tb,iCol){
for (i=0;i<oTable.rows.length;i++){
tb.rows[i].cells[iCol].style.display = oTable.rows[i].cells[iCol].style.display=="none"?"block":"none";
}
}
//隐藏行
function setHiddenRow(tb,iRow){
tb.rows[iRow].style.display = oTable.rows[iRow].style.display == "none"?"block":"none";
}
//创建表格
function createTable(id,rows,cells,tbid){
var tb=document.createElement("table");
var tbody = document.createElement("tbody");
for(var i=0;i<rows;i++){
var tr=document.createElement("tr");
for(var j=0;j<cells;j++){
var cell=document.createElement("td");
tr.appendChild(cell);
}
tbody.appendChild(tr);
}
tb.appendChild(tbody);
tb.setAttribute("id",tbid);//设置创建的TABLE的ID
document.getElementById(id).appendChild(tb);
}
//插入文本
function insertText(tb,row,cel,text){
txt=document.createTextNode(text);
tb.rows[row].cells[cel].appendChild(txt);
}
//修改文本
function updateText(tb,row,cel,text){
tb.rows[row].cells[cel].firstChild.nodeValue=text;
}
//添加子节点
function toAppendChild(tb,row,cel,child){
tb.rows[row].cells[cel].appendChild(child);
}
//删除某行
function removeRow(tb,row){
tb.lastChild.removeChild(tb.rows[row]);
}
//单元格设置属性
function cellSetAttribute(tb,row,col,attributeName,attributeValue){
tb.rows[row].cells[col].setAttribute(attributeName,attributeValue);
}
//单元格添加监听器
function cellAddListener(tb,row,cel,event,fun){
if(window.addEventListener)
{
//其它浏览器的事件代码: Mozilla, Netscape, Firefox
//添加的事件的顺序即执行顺序 //注意用 addEventListener 添加带on的事件,不用加on
// img.addEventListener('click', delRow(this), true);
tb.rows[row].cells[cel].addEventListener(event,fun, true);
}
else
{
//IE 的事件代码 在原先事件上添加 add 方法
// img.attachEvent('onclick',delRow(this));
tb.rows[row].cells[cel].attachEvent("on"+event,fun);
}
}
//新增行
function insertRow(oTable){
var tr=document.createElement("tr");
for (i=0;i<oTable.rows[0].cells.length;i++){
var td= document.createElement("td");
tr.appendChild(td);
}
oTable.lastChild.appendChild(tr);
}
//行设置属性
function rowSetAttribute(tb,row,attributeName,attributeValue){
tb.rows[row].setAttribute(attributeName,attributeValue);
}
//行添加监听器
function rowAddListener(tb,row,event,fun){
if(window.addEventListener)
{
//其它浏览器的事件代码: Mozilla, Netscape, Firefox
//添加的事件的顺序即执行顺序 //注意用 addEventListener 添加带on的事件,不用加on
// img.addEventListener('click', delRow(this), true);
tb.rows[row].addEventListener(event,fun, true);
}
else
{
//IE 的事件代码 在原先事件上添加 add 方法
// img.attachEvent('onclick',delRow(this));
tb.rows[row].attachEvent("on"+event,fun);
}
}
//新增列
function addCells(tb){
for (i=0;i<tb.rows.length;i++){
var td= document.createElement("td");
tb.rows[i].appendChild(td);
}
}
//批量修改单元格属性
function cellsSetAttribute(oTable,attributeName,attributeValue){
for (i=0;i<oTable.rows.length;i++){
for (j=0;j<oTable.rows[i].cells.length;j++){
oTable.rows[i].cells[j].setAttribute(attributeName,attributeValue);
}
}
}
//合并只支持单向合并
//行合并
function mergerRow(tb,row,cell,num){
for(var i= (row+1),j=0;j<(num-1);j++){
tb.rows[i].removeChild(tb.rows[i].cells[cell]);
}
tb.rows[row].cells[cell].setAttribute("rowspan",num);
// document.getElementById('c').innerHTML=document.getElementById('u').innerHTML;
}
//列合并
function mergerCell(tb,row,cell,num){
for(var i= (cell+1), j=0;j<(num-1);j++){
tb.rows[row].removeChild(tb.rows[row].cells[i]);
}
tb.rows[row].cells[cell].setAttribute("colspan",num);
// document.getElementById('c').innerHTML=document.getElementById('u').innerHTML;
}
测试DEMO
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<style>
.testclass{background-color:yellow;}
</style>
<script type="text/javascript" src="stone.js"></script>
<script type="text/javascript">
<!--
function giveText(){
for(var i=0;i<5;i++){
for(var j=0;j<5;j++){
insertText(mytable,i,j,i*5+j);
}
}
}
function addInput(){
var input = document.createElement("input");
input.setAttribute("type","text");
input.setAttribute("value","我是新增的");
toAppendChild(mytable,3,3,input);
}
function listen(){
alert('恭喜你!监听器安装成功!');
}
//-->
</script>
</head>
<body>
表格函数测试<br />
<div id="u">
</div>
<input type="button" value="新建一个5X5的表格" onclick="createTable('u',5,5,'mytable');" />  
<input type="button" value="显示表格边框" onclick="document.getElementById('mytable').setAttribute('border',1);" />  
<input type="button" value="插入文本" onclick="giveText();" />  
<input type="button" value="修改文本" onclick="updateText(mytable,3,3,'text')" />  <br />
<input type="button" value="添加子节点input" onclick="addInput();" />  
<input type="button" value="删除第5行" onclick="removeRow(mytable,4);" />  
<input type="button" value="设置单元格宽度" onclick="cellSetAttribute(mytable,0,0,'width','50')" />  
<input type="button" value="添加单元格监听器" onclick="cellAddListener(mytable,2,2,'click',listen)" />  <br />
<input type="button" value="行合并" onclick="mergerRow(mytable,2,1,2); document.getElementById('u').innerHTML=document.getElementById('u').innerHTML;" />  
<input type="button" value="列合并" onclick="mergerCell(mytable,1,2,3); document.getElementById('u').innerHTML=document.getElementById('u').innerHTML;" />  
<input type="button" value="设置单元格背景色" onclick="cellsSetAttribute(mytable,'class','testclass'); document.getElementById('u').innerHTML=document.getElementById('u').innerHTML;" />  
<input type="button" value="设置行高" onclick="rowSetAttribute(mytable,2,'height','50');" />  <br />
<input type="button" value="新增第4行监听器" onclick="rowAddListener(mytable,3,'click',listen);" />  
<input type="button" value="新增一行" onclick="insertRow(mytable);" />  
<input type="button" value="新增列" onclick="addCells(mytable);" />  
</body>
</html>
测试截图:
一组JS创建和操作表格的函数集合

Javascript 相关文章推荐
javascript event 事件解析
Jan 31 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
Nov 07 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 Javascript
JavaScript中常用的六种互动方法示例
Mar 13 Javascript
解析预加载显示图片艺术
Dec 05 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 Javascript
在Webpack中用url-loader处理图片和字体的问题
Apr 28 Javascript
bootstrap-table后端分页功能完整实例
Jun 01 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
给Function做的OOP扩展
May 07 #Javascript
js arguments.callee的应用代码
May 07 #Javascript
javascript 有用的脚本函数
May 07 #Javascript
JavaScript的parseInt 进制问题
May 07 #Javascript
日期 时间js控件
May 07 #Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
May 07 #Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 #Javascript
You might like
php下载excel无法打开的解决方法
2013/12/24 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
Python有序字典简单实现方法示例
2017/09/28 Python
python梯度下降法的简单示例
2018/08/31 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python怎么提高计算速度
2020/06/11 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
实习老师个人总结的自我评价
2013/09/28 职场文书
两则小学生的自我评价分享
2013/11/14 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Golang的继承模拟实例
2021/06/30 Golang
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL