evt=window.event
if(event.ctrlKey||event.shiftKey)
if(event.ctrlKey||event.shiftKey)
解决方案 »
- 这是浏览器问题还是程序问题
- form中含有自身action和input action,求优先级
- xmlhttp.Responsestream的返回值是个图片 怎么给img
- 求随即数的写法
- ajax操作中,缓存的xml文件问题
- HTTPS下 数据岛载入XML失败,不知道为什么?
- 请问这样的效果是怎么实现的?有类似的代码吗?谢谢!
- HTC不能运行,大虾和虾米都进来看看
- 问如何实现在线时间统计(只要没有关闭浏览器,时间都不能刷新)
- 利用 document.write() 写入不平衡树引发来自网络的数据被重新解析。怎么回事?
- 当点一个frameset的右上角的关闭按钮时,如何使frameset不关闭
- 如何取一个页面所有的checkbox的值?超急,在线等
我已经实现了Ctrl键复选,和系统选文件差不多,现在没时间搞了,年后再做Shift,然后我会把代码贴出来。
<html>
<head>
<title> 表格中多行选中DEMO </title>
<meta name="Generator" content="EditPlus">
<script language="JavaScript">
<!--var Rows=new Array(); //所有选中的行对象
var ShiftStartRow=""; //Shift多选时存储开始行对象//选行主函数
function onfocusit(){
iRow=window.event.srcElement;
do{
iRow=iRow.parentElement;
}while(iRow.tagName!='TR') //Ctrl多选
if(event.ctrlKey){
var j=-1;
for(i=0;i<Rows.length;i++){
if(iRow==Rows[i]){
j=i;
break;
}
}
if(j!=-1){
for(i=j;i<Rows.length-1;i++){
Rows[i]=Rows[i+1];
}
Rows.length=Rows.length-1;
}else{
Rows[Rows.length]=iRow;
}
ShiftStartRow=iRow;
}
//Shift多选
else if(event.shiftKey){
if(ShiftStartRow!=""){
var StartIndex=ShiftStartRow.rowIndex;
var EndIndex=iRow.rowIndex;
var oTable=iRow.parentElement;
Rows.length=0;
if(StartIndex < EndIndex){
for(var i=StartIndex;i<EndIndex+1;i++){
Rows.push(oTable.rows[i]);
}
}
if(StartIndex >= EndIndex){
for(var i=EndIndex;i<StartIndex+1;i++){
Rows.push(oTable.rows[i]);
}
}
}
}else{
Rows.length=1;
Rows[0]=iRow;
ShiftStartRow=iRow;
}
changeColor(iRow);
}//选中行变色
function changeColor(E){
for(var i=1;i<E.parentElement.rows.length;i++){
E.parentElement.rows(i).style.backgroundColor="#FFFFFF";
}
for(i=0;i<Rows.length;i++){
Rows[i].style.backgroundColor="#EEEEEE";
}
}//删除行
function DeleteRow(){
if(Rows.length==0){
alert("请选择要删除的行!");
return false;
}
for(i=0;i<Rows.length;i++){
Rows[i].parentElement.deleteRow(Rows[i].rowIndex)
}
Rows.length=0;
}//复制行
function CopyRow()
{
if(Rows.length==0){
alert("请选择要复制的部件!");
return false;
} for(i=0;i<Rows.length;i++){
oTable=Rows[i].parentElement;
iRowIndex=Rows[i].rowIndex;
oRow=oTable.insertRow(iRowIndex+1);
oRow.attachEvent("onclick",onfocusit);
oRow.attachEvent("onselectstart",returnfalse);
oRow.align=Rows[i].align;
for(var j=0;j<oTable.rows(iRowIndex).cells.length;j++){
oTable.rows(iRowIndex+1).insertCell(j);
oTable.rows(iRowIndex+1).cells(j).innerHTML=oTable.rows(iRowIndex).cells(j).innerHTML;
oTable.rows(iRowIndex+1).cells(j).align=oTable.rows(iRowIndex).cells(j).align;
}
}
}function returnfalse(){
return false;
}
//-->
</script>
</head><body>
<input type="button" value="删除" onClick="DeleteRow()">
<input type="button" value="复制" onClick="CopyRow()">
注意:单击选择行,支持Ctrl、Shift键盘操作
<table border="1" width="100%">
<tr>
<td colspan="2" onselectstart="return false">-------------</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>00000</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>111111</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>222222</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>333333</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>44444</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>5555555</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>6666666</td>
</tr>
<tr onClick="onfocusit()" onselectstart="return false">
<td>JJJJJJJJJJJJJJJJJJJ</td><td>77777777</td>
</tr>
</table>
</body>
</html>
急切了,帮帮忙,老大!1
!