<body >
<form>
<table >
<tr id="item1" onclick="checkSelect(this)" ><td>11111111</td></tr>
....
<tr id="item20" onclick="checkSelect(this)"><td>222222</td></tr>
</table>
<form>
<script>
function checkSelect(i){
if (window.event.shiftKey)
i.style.backgroundColor='#FFCC66'
else
i.style.backgroundColor='#FFffff'
}
</script>
</BODY>
<form>
<table >
<tr id="item1" onclick="checkSelect(this)" ><td>11111111</td></tr>
....
<tr id="item20" onclick="checkSelect(this)"><td>222222</td></tr>
</table>
<form>
<script>
function checkSelect(i){
if (window.event.shiftKey)
i.style.backgroundColor='#FFCC66'
else
i.style.backgroundColor='#FFffff'
}
</script>
</BODY>
我的意思是按住 Shift键不放 选种第一行的多选框,再选第六行,一次性把第一至第六行的多选框都选种。
按住Shift,反向选择是取消,正向选择是选中。支持Ctrl键的连选<html>
<body onload="initObjects()">
<form><TABLE>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">111111</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">222222</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">333333</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">444444</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">555555</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">666666</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">777777</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">888888</TD>
</TR>
<TR onclick="checkSelect(this)">
<TD><INPUT TYPE="checkbox" NAME="boxitem">999999</TD>
</TR>
</TABLE></form><script>var selectedIndex = -1;
var tmpSelectedIndex = -1;var itemsStatus = [];
var alltr = [];
var allcheckbox = [];function initObjects()
{
alltr = document.all.tags("tr"); var allinput = document.all.tags("input");
var checkboxLength = 0; for (var i=0;i<allinput.length;i++)
{
if (allinput[i].type == "checkbox")
{
allcheckbox[checkboxLength] = allinput[i];
itemsStatus[i] = "0";
checkboxLength ++;
}
}
}function checkSelect(obj){ var objIndex = -1;
for (var i=0;i<alltr.length;i++)
{
if (obj == alltr[i])
{
objIndex = i;
break;
}
}
if (window.event.shiftKey)
{
if (selectedIndex == -1)
{
selectItem(objIndex);
selectedIndex = objIndex;
}else
{
selectItem(selectedIndex,objIndex)
}
}else if (window.event.ctrlKey)
{
selectItem(objIndex);
selectedIndex = objIndex;
}else
{
selectItem(objIndex);
clearAllOtherSelected(objIndex);
selectedIndex = objIndex;
}
}function selectItem(beginIdx,endIdx)
{
selectTr(beginIdx,endIdx);
selectCheckbox(beginIdx,endIdx);
}function selectTr(beginIdx,endIdx)
{
var itemFlag = false;
if (endIdx != null)
{
if (beginIdx < endIdx)
{
itemFlag = true;
for (var i=beginIdx;i<=endIdx;i++)
{
setTr(i,itemFlag);
}
}else if (beginIdx > endIdx)
{
itemFlag = false;
for (var i=endIdx;i<=beginIdx;i++)
{
setTr(i,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setTr(beginIdx,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setTr(beginIdx,itemFlag);
}
}function selectCheckbox(beginIdx,endIdx)
{
var itemFlag = false;
if (endIdx != null)
{
if (beginIdx < endIdx)
{
itemFlag = true;
for (var i=beginIdx;i<=endIdx;i++)
{
setCheckbox(i,itemFlag);
setItemSatus(i,itemFlag);
}
}else if (beginIdx > endIdx)
{
itemFlag = false;
for (var i=endIdx;i<=beginIdx;i++)
{
setCheckbox(i,itemFlag);
setItemSatus(i,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setCheckbox(beginIdx,itemFlag);
setItemSatus(beginIdx,itemFlag);
}
}else
{
itemFlag = isItemNotSelected(beginIdx);
setCheckbox(beginIdx,itemFlag);
setItemSatus(beginIdx,itemFlag);
}
}function isItemNotSelected(idx)
{
if (itemsStatus[idx] == null || itemsStatus[idx] == "0")
return true;
else
return false;
}function setCheckbox(idx,selectFlag)
{
allcheckbox[idx].checked = selectFlag;
}function setTr(idx,selectFlag)
{
if (selectFlag)
{
alltr[idx].style.backgroundColor = "#FFCC66";
}else
{
alltr[idx].style.backgroundColor = "#FFFFFF";
}
}function setItemSatus(idx,selectFlag)
{
if (selectFlag)
{
itemsStatus[idx] = "1";
}else
{
itemsStatus[idx] = "0";
}
}function clearAllSelected()
{
for (var i=0;i<itemsStatus.length;i++)
{
if (itemsStatus[i] == "1")
{
setTr(i,false);
setCheckbox(i,false);
setItemSatus(i,false);
}
}
}function clearAllOtherSelected(idx)
{
for (var i=0;i<itemsStatus.length;i++)
{
if (idx != i && itemsStatus[i] == "1")
{
setTr(i,false);
setCheckbox(i,false);
setItemSatus(i,false);
}
}
}</script>
</BODY>
</html>