<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.containe{
margin-top: 100px;
margin-left: 100px;
user-select: none;/*禁止复制*/
}
table{
width: 400px;
min-height: 40px;
line-height: 40px;
text-align: center;
border-collapse: collapse;
}
table,th,td{
border: 1px solid #000
}
</style>
</head>
<body>
<div class="containe">
<table id="table">
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr>
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>
</div>
<script type="text/javascript">
var oTable = document.getElementById("table");
//格子内容交换
var content = null;
var contentHtml = null;
//行交换
var thNode = null;
var thNodeHtml = null;
//列交换
var startIndex = 0;
var endIndex = 0;
var trNodes = oTable.children[0].children;
var startNodeHtml = [];
//利用事件代理触发鼠标事件
oTable.onmousedown = function(e) {
var e = e || window.e;
content = e.target; //当前事件对象
if(content.nodeName.toLocaleLowerCase() != 'th') {
contentHtml = content.innerHTML;
}else {
//行交换所用
thNode = content.parentNode;
thNodeHtml = thNode.innerHTML;
//列交换所用
startIndex = e.srcElement.cellIndex; //获取初始被触发的th索引值
}
}
oTable.onmouseup = function(e) {
var e = e || window.e;
if(content.nodeName.toLocaleLowerCase() != 'th') {
//格子内容交换
content.innerHTML = e.target.innerHTML;
e.target.innerHTML = contentHtml;
}else {
if(e.target.nodeName.toLocaleLowerCase() == 'td') {
//行交换
thNode.innerHTML = e.target.parentNode.innerHTML;
e.target.parentNode.innerHTML = thNodeHtml;
}else if(e.target.nodeName.toLocaleLowerCase() == 'th') {
//列交换
endIndex = e.srcElement.cellIndex; ////获取结束被触发的th索引值
for(var i = 0; i < trNodes.length; i++) { //文本内容替换
var temp = trNodes[i].children[startIndex].innerHTML;
trNodes[i].children[startIndex].innerHTML = trNodes[i].children[endIndex].innerHTML;
trNodes[i].children[endIndex].innerHTML = temp;
}
}
}
}
</script>
</body>
</html>
原生js实现表格行列交换、内容交换
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 今天我们一起来学习一下求和函数,在求和函数中我们主要学习SUM/Sumif/Sumifs函数,首先我们来学习一下S...
- vue常用指令 v-model:双向数据绑定,常用于表单元素 v-for: 对数组或对象进行循环操作 v-on:时...