一组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 相关文章推荐
jQuery的一些特性和用法整理小结
Jan 13 Javascript
javascript css styleFloat和cssFloat
Mar 15 Javascript
Jquery倒计时源码分享
May 16 Javascript
Node.js实现的简易网页抓取功能示例
Dec 05 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
Vue实现本地购物车功能
Dec 05 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
Mar 27 Javascript
详解vue 组件注册
Nov 20 Vue.js
给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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php session的锁和并发
2016/01/22 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
JavaScript类的写法
2016/09/17 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
《曹刿论战》教学反思
2014/03/02 职场文书
优乐美广告词
2014/03/14 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
2014年社区工作总结
2014/11/18 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
python实现简单反弹球游戏
2021/04/12 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL