对于当前格curCell来说:
表格:var table=curCell.parentElement.parentElement
本行:var curRow=curCell.parentElement
上一行: table.rows[curRow.rowIndex-1]
下一行: table.rows[curRow.rowIndex+1]
前一列: curRow.cells[curCell.cellIndex-1]
后一列: curRow.cells[curCell.cellIndex+1]
表格:var table=curCell.parentElement.parentElement
本行:var curRow=curCell.parentElement
上一行: table.rows[curRow.rowIndex-1]
下一行: table.rows[curRow.rowIndex+1]
前一列: curRow.cells[curCell.cellIndex-1]
后一列: curRow.cells[curCell.cellIndex+1]
解决方案 »
- div的拖放功能怎么让层和层之间不能重叠啊
- JS操作table,涉及到rowspan
- 如何全选列表框里的数据呀?
- iframe内部的js,如何实现jquery的ready事件
- 动态下拉菜单被下拉列框挡住,如何才能使其总在最顶层呢?
- 网上调查如何防止多次提交呢
- 请问怎么执行代码后面的javascript函数,也就是”onclick=“ 写在 function的前面
- 有一个比较棘手的问题!
- 需要一段网页自动刷新的代码
- 关于bootstrap的fileinput预览图片的问题
- 用javascript判断文件的大小和扩展名??在线等待!!
- 急需判断密码的正则表达式.密码必须包含字母数字及特殊字符8-20位.谢谢!
var ctr = td9.parentNode; //本行
var btr = table.rows[ctr.rowIndex-1] //上一行
result = ctr.cells[td9.cellIndex]; //上一行的那个单元格
可是td9的可视模式是td1,而不是td7
var ctr = td9.parentNode; //本行
var btr = table.rows[ctr.rowIndex-1] //上一行
result = btr.cells[td9.cellIndex]; //上一行的那个单元格
可是td9的可视模式下,上一个单元格是td1,而不是td7
<!--
var startX = 0;
var startY = 0;
var endX = 0;
var endY = 0;
var Scale = false; // true时为鼠标状态为选择时
var Drag = false; // true时为鼠标状态为拖动时
var Drop = false; // true时为鼠标状态为放置被拖动的单元格时
var r = 10; // 表格的行数
var c = 10; // 表格的列数
var cWidth = 25; // 单元格的宽度
var sWidth = 0;
var DropType = 2; // Drop方式
var selectedBgColor = "#ff0000"; // 被选中的单元格背景色
var MovedBgColor = "#eeeeee"; // 被移到第二个表格后的背景色
var tdArrObj = new Array(); // 用来放被移动的单元格的数组
var tdObj = null; // tdArrObj里的每个成员
document.onmousedown = function(){
if(window.event.srcElement.tagName == "TD" && window.event.srcElement.bgColor == selectedBgColor){
Drag = true;
tdArrObj = new Array();
var tdList = document.getElementById("myTb1").getElementsByTagName("td");
for(var i=0;i<tdList.length;i++){
if(tdList[i].bgColor == selectedBgColor){
var tdObj = tdList[i];
tdObj.style.zIndex=1;
tdObj.mouseDownY=event.clientY;
tdObj.mouseDownX=event.clientX;
tdObj.setCapture();
tdArrObj[tdArrObj.length] = tdObj;
}
}
}else{
Scale = true;
startX = event.clientX;
startY = event.clientY;
d.style.display = "";
d.style.border = "1px solid #333333";
d.style.top = startY;
d.style.left = startX;
d.style.width = "0px"
d.style.height = "0px"
}
}
document.onmousemove = MouseMove;function MouseMove(){
if(Scale){
endX = event.clientX;
endY = event.clientY;
d.style.width = Math.abs(endX -startX) + "px";
d.style.height = Math.abs(endY -startY) + "px";
if(endX<startX) d.style.left = startX - Math.abs(endX -startX);
if(endY<startY) d.style.top = startY - Math.abs(endY -startY);
window.status = "Width:" + Math.abs(endX -startX) + " Height:" + Math.abs(endY -startY);
}
}
document.onmouseup = function(){
if(Scale){
Scale = false;
d.style.display = "none"; var tdList = document.getElementById("myTb1").getElementsByTagName("td");
for(var i=0;i<tdList.length;i++)
if(tdList[i].bgColor != MovedBgColor && event.srcElement.tagName == "TD") tdList[i].bgColor = "#ffffff";
if(endX == 0 || endY == 0 || startX == 0 || startY == 0){
endX = startX = window.event.clientX;
endY = startY = window.event.clientY;
} var x1 = 0,x2 = 0, y1 =0, y2 = 0, xx1 = 0, xx2 = 0, yy1=0, yy2 = 0;
if(endX>startX){
x1 = endX;
x2 = startX;
}else{
x2 = endX;
x1 = startX;
}
if(endY>startY){
y1 = endY;
y2 = startY;
}else{
y2 = endY;
y1 = startY;
}
xx1 = x1;xx2 = x2;yy1 = y1;yy2 = y2;
while(xx2<=xx1){
yy1 = y1;yy2 = y2;
while(yy2<=yy1){
var oElement = document.elementFromPoint(xx2, yy2);
if(oElement.tagName == "TD"){
if(oElement.bgColor != MovedBgColor) oElement.bgColor = selectedBgColor;
}
yy2 += (cWidth/2);
}
xx2 += (cWidth/2);
}
endX = 0;endY = 0;startX = 0;startY = 0;
}
}
//-->
</SCRIPT>
<div id="d" style="position:absolute;display:none;z-index:2"></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
function load(){
fCreateTable(true);
document.body.appendChild(document.createElement("<br>"));
}
function fCreateTable(flag){
var tb = document.createElement("table");
tb.cellPadding = "0";
tb.cellSpacing = "0";
tb.border = "1px solid #cccccc";
if(flag) tb.id = "myTb1";else tb.id = "myTb0";
for(var i=0;i<r;i++){
var row = tb.insertRow(i);
for(var j=0;j<c;j++){
var cell = row.insertCell(j)
if(flag) cell.innerText = i*c+j;else cell.innerHTML = " ";
cell.style.width = cWidth + "px";
cell.style.height = cWidth + "px";
cell.style.position = "relative";
//cell.style.border = "1px solid #cccccc"
}
}
document.body.appendChild(tb);
}
// 合并function
function MergeCell(){
tdArrObj = new Array();
var minRow = r-1; maxRow = 0; minCell = c-1; maxCell = 0;
var tdList = document.getElementById("myTb1").getElementsByTagName("td");
for(var i=0;i<tdList.length;i++){
if(tdList[i].bgColor == selectedBgColor){
// 将被选中的单元格放到数组
tdArrObj[tdArrObj.length] = tdList[i];
// 找出被选中的开始行和结束行, 开始列和结束列
if(tdList[i].cellIndex<minCell) minCell = tdList[i].cellIndex;
if(tdList[i].cellIndex>maxCell) maxCell = tdList[i].cellIndex;
if(tdList[i].parentElement.rowIndex<minRow) minRow = tdList[i].parentElement.rowIndex;
if(tdList[i].parentElement.rowIndex>maxRow) maxRow = tdList[i].parentElement.rowIndex;
}
}
if(tdArrObj.length>1){
// 更改第一个cell的colspan,rowspan,bgcolor属性
tdArrObj[0].colSpan = maxCell - minCell +1 ;
tdArrObj[0].rowSpan = maxRow - minRow +1 ;
tdArrObj[0].bgColor = "#ffffff";
var s = tdArrObj[0].innerText;
// 数组的其余cell全部删除
for(var i=1;i<tdArrObj.length;i++){
tdArrObj[i].bgColor = "#ffffff";
tdArrObj[i].parentElement.removeChild(tdArrObj[i]);
}
}
}//-->
</SCRIPT>
<body onload="load()" onselectstart="return false" style="cursor:pointer;">
<!-- Drop 方式: <select onchange="DropType = this.value"><option value="0">按表格1顺序</option><option value="1">鼠标当前单元格逐行</option><option value="2" selected>鼠标当前单元格相对表格1的顺序</option></select> -->
<INPUT TYPE="button" value="合并" onclick="MergeCell()">
<br><br>
</body>