var oTable = document.getElementById("table");
var iRowCount = oTable.rows.length;
var iCellCount = oTable.rows[0].cells.length;
得到行数和列数以后循环每列/行
var iRowCount = oTable.rows.length;
var iCellCount = oTable.rows[0].cells.length;
得到行数和列数以后循环每列/行
<tr><td width="3%" align="center"> </td>
<td width="3%" align="center">Line1</td>
<td width="3%" align="center">Line2</td>
<td width="3%" align="center">Line3</td>
</tr>
<tr>
<td>Row1</td>
<td align="center"><input type="checkbox" name="rowline[1][1]" value="11" /></td>
<td align="center"><input type="checkbox" name="rowline[1][2]" value="12" /></td>
<td align="center"><input type="checkbox" name="rowline[1][3]" value="13"/></td>
</tr>
<tr>
<td>Row2</td>
<td align="center"><input type="checkbox" name="rowline[2][1]" value="21" /></td>
<td align="center"><input type="checkbox" name="rowline[2][2]" value="22" /></td>
<td align="center"><input type="checkbox" name="rowline[2][3]" value="23"/></td>
</tr>
<tr>
<td>Row3</td>
<td align="center"><input type="checkbox" name="rowline[3][1]" value="31" /></td>
<td align="center"><input type="checkbox" name="rowline[3][2]" value="32" /></td>
<td align="center"><input type="checkbox" name="rowline[3][3]" value="33"/></td>
</tr>
</table>要实现的就是:
点击行头或列头里的文字,全选或全取消相应的整行/整列的CHECKBOX
比如,点击Line1,则选中Line1所在列的纵向所有checkbox,再点一次,点全取消该列状态。
点击Row1,则选中Row1所在行的横向所有checkbox,再点一次,则全取消该行状态。谢谢各位了!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<table width="300" border="1" cellspacing="1" cellpadding="1" id="targetTable">
<tr> <td width="3%" align="center"> </td>
<td width="3%" align="center" onclick="SelectCbx(0,1,this)">Line1 </td>
<td width="3%" align="center" onclick="SelectCbx(0,2,this)">Line2 </td>
<td width="3%" align="center" onclick="SelectCbx(0,3,this)">Line3 </td>
</tr>
<tr>
<td onclick="SelectCbx(1,0,this)">Row1 </td>
<td align="center"> <input type="checkbox" name="rowline[1][1]" value="11" /> </td>
<td align="center"> <input type="checkbox" name="rowline[1][2]" value="12" /> </td>
<td align="center"> <input type="checkbox" name="rowline[1][3]" value="13"/> </td>
</tr>
<tr>
<td onclick="SelectCbx(2,0,this)">Row2 </td>
<td align="center"> <input type="checkbox" name="rowline[2][1]" value="21" /> </td>
<td align="center"> <input type="checkbox" name="rowline[2][2]" value="22" /> </td>
<td align="center"> <input type="checkbox" name="rowline[2][3]" value="23"/> </td>
</tr>
<tr>
<td onclick="SelectCbx(3,0,this)">Row3 </td>
<td align="center"> <input type="checkbox" name="rowline[3][1]" value="31" /> </td>
<td align="center"> <input type="checkbox" name="rowline[3][2]" value="32" /> </td>
<td align="center"> <input type="checkbox" name="rowline[3][3]" value="33"/> </td>
</tr>
</table>
<script type="text/javascript">
function SelectCbx(x,y,t){
t.selState=t.selState?false:true;
var table=document.getElementById("targetTable");
for(var i=1;i<table.rows.length;i++){
if(x==0){
table.rows[i].cells[y].getElementsByTagName("input")[0].checked=t.selState;
}
else if(i==x){
for(var j=1;j<table.rows[i].cells.length;j++){
table.rows[i].cells[j].getElementsByTagName("input")[0].checked=t.selState;
}
}
}
}
</script>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>dhtml.table.selectRowOrColumnCheckboxes.html</title>
<meta name="generator" content="editplus" />
<meta name="author" content="[email protected]" />
<meta name="keywords" content="dhtml js csdn" />
<meta name="description" content="for csdn.net" />
<style type="text/css">
.hand
{
cursor: hand;
}
table
{
background-color: white;
}
td
{
font-family: "Courier New";
}
</style>
</head> <body>
<table id="tbeTaget" width="300" border="1" cellspacing="1" cellpadding="1">
<tr>
<td width="3%" align="center"> </td>
<td width="3%" align="center">Line1 </td>
<td width="3%" align="center">Line2 </td>
<td width="3%" align="center">Line3 </td>
</tr>
<tr>
<td>Row1 </td>
<td align="center"> <input type="checkbox" name="rowline[1][1]" value="11" /> </td>
<td align="center"> <input type="checkbox" name="rowline[1][2]" value="12" /> </td>
<td align="center"> <input type="checkbox" name="rowline[1][3]" value="13"/> </td>
</tr>
<tr>
<td>Row2 </td>
<td align="center"> <input type="checkbox" name="rowline[2][1]" value="21" /> </td>
<td align="center"> <input type="checkbox" name="rowline[2][2]" value="22" /> </td>
<td align="center"> <input type="checkbox" name="rowline[2][3]" value="23"/> </td>
</tr>
<tr>
<td>Row3 </td>
<td align="center"> <input type="checkbox" name="rowline[3][1]" value="31" /> </td>
<td align="center"> <input type="checkbox" name="rowline[3][2]" value="32" /> </td>
<td align="center"> <input type="checkbox" name="rowline[3][3]" value="33"/> </td>
</tr>
</table>
</body>
<script type="text/javascript">
<!--
function $(sId)
{
return document.getElementById(sId);
}function setSelected(target)
{
if (target.selected == undefined)
target.selected = true;
else
target.selected = !target.selected;
}function setCheckboxes(target, isSelected)
{
var collInput = target.getElementsByTagName("input");
for (var i=0; i<collInput.length; i++)
{
if (collInput[i].type.toLowerCase()=="checkbox")
{
collInput[i].checked = isSelected;
}
}
}function setCheckboxesInColumn(targetCell, isSelected)
{
var curTable = targetCell.parentNode.parentNode;
var curRow = targetCell.parentNode;
var oCell;
for (var i=curRow.rowIndex; i<curTable.rows.length; i++)
{
oCell = curTable.rows[i].cells[targetCell.cellIndex];
setCheckboxes(oCell, isSelected);
}
}function getCtrlCells(targetTable, ctrlRowIndex, ctrlColumnIndex)
{
var collCell = new Array(); for (var i=ctrlColumnIndex+1; i<targetTable.rows[ctrlRowIndex].cells.length; i++)
{
collCell.push(targetTable.rows[ctrlRowIndex].cells[i]);
} for (var i=ctrlRowIndex+1; i<targetTable.rows.length; i++)
{
collCell.push(targetTable.rows[i].cells[ctrlColumnIndex]);
} return collCell;
}function setBackgroundColor(oCell)
{
if (oCell.selected)
oCell.style.backgroundColor = "yellow";
else
oCell.style.backgroundColor = "";
}var oTable = $("tbeTaget");var ctrlRowIndex = 0;
var startRowIndex = 1;
var ctrlColumnIndex = 0;
var startColumnIndex = 1;var oCell;
for (var i=startRowIndex; i<oTable.rows.length; i++)
{
oCell = oTable.rows[i].cells[ctrlColumnIndex];
oCell.onclick = function() {
setSelected(this);
var oRow = this.parentNode;
setCheckboxes(oRow, this.selected);
setBackgroundColor(this);
};
}for (var i=startColumnIndex; i<oTable.rows[ctrlRowIndex].cells.length; i++)
{
oCell = oTable.rows[ctrlRowIndex].cells[i];
oCell.onclick = function() {
setSelected(this);
setCheckboxesInColumn(this, this.selected);
setBackgroundColor(this);
};
}/*
oTable.rows[ctrlRowIndex].cells[ctrlColumnIndex].onclick = function() {
setSelected(this);
var oTable = this.parentNode.parentNode;
setCheckboxes(oTable, this.selected);
};
*/var ctrlCells = getCtrlCells(oTable, ctrlRowIndex, ctrlColumnIndex);
for (var i=0; i<ctrlCells.length; i++)
{
ctrlCells[i].className = "hand";
}
//-->
</script>
</html>
这个控件有个级联checkbox模版列,可以满足你的要求,实现起来很简单。下载个yycontrol.dll就可以用了。