读书人

javascript动态操作报表:新增、设置样

发布时间: 2012-11-22 00:16:41 作者: rapoo

javascript动态操作表格:新增、设置样式、删除、移动行
一、动态设置元素readonly属性时,js里面的readOnly一定要大写O

document.getElementById("id").readOnly=true;

二、动态给表插入行:

function addRow(){
//动态插入一行,mediaMes是表对象
var oRow1=mediaMes.insertRow(mediaMes.rows.length);

//设置tr的id
oRow1.id="tr"+thisId;

//获得表总的行数
var aRows=mediaMes.rows;

//获得新添加行的列集合
var aCells=oRow1.cells;

//再新添加的行里面插入一个列
var oCell1_1=aRows[oRow1.rowIndex].insertCell(aCells.length);

//=================设置列的样式======================
oCell1_1.align="center";
var oStyle1 = oCell1_1.getAttribute("style");

//Ie浏览器动态设置样式不能直接给行或列指定class属性

//要先把样式放到一个对象的attribute里面,然后在把这个对象设置到行或列里面去
// ie
if(oStyle1 == "[object]") {
oStyle1.setAttribute("cssText","border-right: 1px solid #003399;border-bottom: 1px solid #003399;");
oCell1_1.setAttribute("style",oStyle1 );
} else {
oCell1_1.setAttribute("class","td_border" );
}
var cell1="<input type='text' name="user" id='user'/>";
oCell1_1.innerHTML=cell1;
}


三、
function delRow(rowId){
var poss=document.getElementById(rowId);
mediaMes.deleteRow(poss.rowIndex);
}

四、动态移动table里面的行(tr)

// 先获得当前行的父节点,就是table

var parent=aRows[sort].parentNode;

//table移除一个行,返回的对象就是被移除的行
var orgNode=parent.removeChild(aRows[sort+1]);
var destNode=aRows[sort];

//在一个行前面把这个行插入
parent.insertBefore(orgNode,destNode);


1 楼 keshin 2009-04-23 insertRow和insertCell这两个方法都是直接在dom中插入node,每次操作都会导致浏览器进行一次渲染页面的操作,数据量大的情况下性能表现不好。
而且insertRow(mediaMes.rows.length)这样的代码大可以用insertRow(-1)代替 2 楼 xhfei 2009-04-27 keshin 写道
insertRow和insertCell这两个方法都是直接在dom中插入node,每次操作都会导致浏览器进行一次渲染页面的操作,数据量大的情况下性能表现不好。
而且insertRow(mediaMes.rows.length)这样的代码大可以用insertRow(-1)代替

谢谢提醒 3 楼 fcu 2009-05-19 其实我没有看懂 4 楼 leisure 2009-06-15 keshin 写道insertRow和insertCell这两个方法都是直接在dom中插入node,每次操作都会导致浏览器进行一次渲染页面的操作,数据量大的情况下性能表现不好。
而且insertRow(mediaMes.rows.length)这样的代码大可以用insertRow(-1)代替

那有什么好的建议没?
因为目前我碰到了这个问题 5 楼 ninecat 2009-06-17 使用createElement来替换insertRow和insertCell可以再一定程度上解决性能问题
例:
使用
var row = document.createElement("TR");
tbody.appendChild( row );
而不是
var row = tbody.insertRow();

读书人网 >JavaScript

热点推荐