<table border="1">
<script language="VBScript" type="text/VBScript">
Dim i,j
For i = 1 To 5
Document.Write "<tr>"
For j = 1 To 5
Document.Write "<td>"& i & j &"</td>"
Next
Document.Write "</tr>"
Next
objTR=objTBODY.rows[nRow];
objTD=objTR.cells[nCell];
var objs=objTD.all;
for(var i=0;i<objs.length;i++){
//此处使用ojbs[0],实际使用时可能需要加以修改,或加入其他条件
try{
lightonRow(objTR);
objs[i].focus();//setCursorPosition(objs[i],-1);
return;
}catch(e){
continue;
//if error occur,continue to next element
}
}//end for objs.length
}
//设置键盘状态,即bKeyDown的值
function setKeyDown(status){
bKeyDown=status;
}
//得到光标的位置
function getCursorPosition(obj){
var qswh="@#%#^&#*$"
obj.focus();
rng=document.selection.createRange();
rng.text=qswh;
var nPosition=obj.value.indexOf(qswh)
rng.moveStart("character", -qswh.length)
rng.text="";
return nPosition;
}
//设置光标位置
function setCursorPosition(obj,position){
range=obj.createTextRange();
range.collapse(true);
range.moveStart('character',position);
range.select();
}
全局变量
var inputFocus;//该变量记录当前焦点的input
var bKeyDown=false;//记录键盘被按下的状态,当有键盘按下时其值为true
function setRowClass(obj,className){
obj.className=className;
var oldClass,toClass;
if(className=="tableData") {oldClass="inputTableDataHit";toClass="inputTableData";}
if(className=="tableDataHit") {oldClass="inputTableData";toClass="inputTableDataHit";}
var objsInput=obj.all;
for(var i=0;i<objsInput.length;i++)
if(objsInput[i].tagName=="INPUT")if(objsInput[i].className==oldClass)objsInput[i].className=toClass;
}
function lightonRow(obj){
if(obj.tagName!="TR")return;
//将所有未被选中的行取消高亮度现实
var tableOnlineEdit=obj.parentElement;
while(tableOnlineEdit.tagName!="TABLE")tableOnlineEdit=tableOnlineEdit.parentElement;
var objsCheckBox=tableOnlineEdit.all("checkLine");
for(var iCheckBox=1;iCheckBox<objsCheckBox.length;iCheckBox++)
if(objsCheckBox[iCheckBox].checked==false) setRowClass(tableOnlineEdit.rows[iCheckBox+1],"tableData");
//当前点击行高亮度显示
setRowClass(obj,"tableDataHit");
}
//得到obj的上级元素TagName
function getUpperObj(obj,TagName){
var strTagName=TagName.toUpperCase();
var objUpper=obj.parentElement;
while(objUpper){
if(objUpper.tagName==strTagName) break;
objUpper=objUpper.parentElement;
}
return objUpper;
}
function getPosition(obj,pos){
var t=eval("obj."+pos);
while(obj=obj.offsetParent){
t+=eval("obj."+pos);
}
return t;
}
function showInputSelect(obj,objShow){
inputFocus=obj;//记录当前焦点input至全局变量
objShow.style.top =getPosition(obj,"offsetTop")+obj.offsetHeight+2;
objShow.style.left=getPosition(obj,"offsetLeft");
objShow.style.width=obj.offsetWidth;
objShow.value=obj.value;
objShow.style.display="block";
}
function setInputFromSelect(objTo,objShow){
objTo.value=objShow.options[objShow.selectedIndex].value;
//objShow.style.display="none";
}
function hideInput(obj){
obj.style.display="none";
}
function clearRow(objTable){
var tbodyOnlineEdit=objTable.getElementsByTagName("TBODY")[0];
for (var i=tbodyOnlineEdit.children.length-1;i>=0;i--)
tbodyOnlineEdit.deleteRow(i);
}
function deleteRow(objTable){
var tbodyOnlineEdit=objTable.getElementsByTagName("TBODY")[0];
for (var i=tbodyOnlineEdit.children.length-1; i>=0 ; i-- )
if (tbodyOnlineEdit.children[i].firstChild.firstChild.checked)
tbodyOnlineEdit.deleteRow(i);
}
function addRow(objTable){
var tbodyOnlineEdit=objTable.getElementsByTagName("TBODY")[0];
var theadOnlineEdit=objTable.getElementsByTagName("THEAD")[0];
var elm = theadOnlineEdit.lastChild.cloneNode(true);
elm.style.display="";
tbodyOnlineEdit.insertBefore(elm);
}
//将指定数据行的objRow的输入域strName设置为strValue
function setInputValue(objRow,strName,strValue){
var objs=objRow.all;
for(var i=0;i<objs.length;i++){
if(objs[i].name==strName)objs[i].value=strValue;
}
}
//添加一个实例数据行
function addInstanceRow(objTable,Names,Values){
var tbodyOnlineEdit=objTable.getElementsByTagName("TBODY")[0];
var theadOnlineEdit=objTable.getElementsByTagName("THEAD")[0];
var elm = theadOnlineEdit.lastChild.cloneNode(true)
elm.style.display="";
for(var i=0;i<Names.length;i++)
setInputValue(elm,Names[i],Values[i]);
tbodyOnlineEdit.insertBefore(elm);
}
//将全部复选框设为指定值
function setOnlineEditCheckBox(obj,value){
var tbodyOnlineEdit=obj.getElementsByTagName("TBODY")[0];
for (var i=tbodyOnlineEdit.children.length-1; i>=0 ; i-- )
tbodyOnlineEdit.children[i].firstChild.firstChild.checked=value;
}
//为动态表格增加键盘导航功能,要使用该功能请在表格定义中增加事件处理onKeyDown="navigateKeys()" onKeyUp="setKeyDown(false)"
//有一点点问题,当按下"->"跳转到下一输入域时,光标显示在第一个字符之后
//建议仍然使用Tab键跳转
function navigateKeys(){
<html>
<head>
<!--
* Title: Table to edit online
* Description: Use to table to input data to a form
* Copyright: Copyright (c) 2003
* Company: weide
* @author weidegong(weidegong@yahoo.com.cn)
* @version 3.2
* Function 动态可编辑表格构成的表单,其中输入域及其输入形式可根据实际需要自行设置(参考本例Select),IE6测试通过
将script和style定义放在页面head区;将如<table></table>区域拷贝至需要使用该表格的位置即可;最下方为参考按钮
为了能在同一Form中使用多个表格,故将<table>放在form中,而不是将<TBODY>放在form中,这样导致提交的输入域的第一个值无效,如在JSP中:String strxs[]=request.getParameterValues("x");//则strxs[0]即为无效数据