几个函数,和你的功能也不太一样我记录的是第一个和最后一个单元格的行列号,你自己 修改吧function tabStart(){  
    obj=window.event.srcElement;  
    form1.col1.value = obj.cellIndex+1;  
    form1.col2.value = form1.col1.value;  
    form1.row1.value = obj.parentElement.rowIndex+1;  
    form1.row2.value = form1.row1.value;  
}  //获取结束值,并增删color.  by cc
function tabEnd(){  
    var temp=-1;
obj=window.event.srcElement;  
    form1.col2.value = obj.cellIndex+1;  
    form1.row2.value = obj.parentElement.rowIndex+1; 
    if((form1.col1.value==form1.col2.value)&&(form1.row1.value==form1.row2.value)){
if(!event.ctrlKey)
{
delColor();
//addColor();
}
}
else{
addColor(); 
}
}  //获取 “选择单元位置”的字符串
function addColor()
{
var i,j,temp;
var colRightNum1,colRightNum2;
if(!event.ctrlKey)
{
delColor();
}
    colNum1 = form1.col1.value;
    colNum2 = form1.col2.value;
    rowNum1 = form1.row1.value;
    rowNum2 = form1.row2.value;
//alert(colNum1 + "," +colNum2);
try
{
colRightNum1 = tab1.rows[rowNum1-1].cells.length - colNum1;
colRightNum2 = tab1.rows[rowNum2-1].cells.length - colNum2;
}
catch(e)
{
return;
}
if((positionStr=="")||(positionStr==null))
{
positionStr = rowNum1 + "," + rowNum2  + "," + colNum1 + "," + colNum2 ;
}
else
{
positionStr = positionStr + "|" + rowNum1 + "," + rowNum2  + "," + colNum1 + "," + colNum2;

try
{
for(i=form1.row1.value-1;i<form1.row2.value;i++)
{
for(j=tab1.rows[i].cells.length-1 - colRightNum1;j<=tab1.rows[i].cells.length-1 - colRightNum2;j++)
{
tab1.rows[i].cells[j].bgColor="gray";
}
}
}
catch(e)
{
return;
}
}function delColor()
{
if(event.button==2)
{
return;
}
positionStr = "";
for(i = 0;i<tab1.rows.length;i++)
{
for(j = 0;j<tab1.rows[i].cells.length;j++)
{
tab1.rows[i].cells[j].bgColor="#FFFFFF";
}
}
}调用:<table onmousedown='tabStart()' onmouseup='tabEnd()'>