您的位置:首页 > Web前端 > JQuery

Jquery操作表格元素

2017-02-16 22:24 127 查看
首先在IE下面  var mytable = document.getElementById("mytable").rows[1].cells[2].innerHTML; 

这种方式 IE下面回报错;说没有.innerHTML的值;查资料发现是因为 .innerHTML和jQuery冲突

那只能用jQuery的方式获取单元的值了

1.先获取表格有几行数据和几列数据

          var rows = document.getElementById("playlistTable").rows.length; //获得行数(包括thead)
          var colums = document.getElementById("playlistTable").rows[0].cells.length; //获得列数

 2.循环获取每个单元格的数据

   获取方式是  var tdValue = $("#playlistTable tr:eq("+i+") td:eq(0)").html();//其中i是变量;要用那种方式“”

                 正常情况是var tdValue = $("#playlistTable tr:eq(0) td:eq(0)").html();

if(rows > 1){// 不要第一行的 thead)

            for (var i = 1; i < rows; i++) { //每行

                var PayObj = new Object();

                PayObj.O_NBR = O_NBR;

                var tdValue = $("#playlistTable tr:eq("+i+") td:eq(0)").html();

                if(tdValue == "POS录入"){

                   PayObj.P_PAY_TYP = "3";

                   PayObj.P_POS = $("#playlistTable tr:eq("+i+") td:eq(5)").html();

                   PayObj.P_NBR = $("#playlistTable tr:eq("+i+") td:eq(4)").html();

                   PayObj.P_HL_ZH = $("#playlistTable tr:eq("+i+") td:eq(7)").html();

                }

 3.其他发现

   就是在 js里面 也可以用对象的方式封装数据 

     (1)   //初始化JSON数组;这是对象数组

             var a = JSON.parse("{\"title\":\"\",\"data\":[]}");

      (2)初始化对象

               var PayObj = new Object();
                PayObj.O_NBR ="123456789";

                PayObj.NAME ="吴水水";

       (3)添加对象到数组

               a.data.add(PayObj);   //
有时候 js 报找不到  add()方法的错误;这是可以使用 push();

        (4)格式化数据

                ///格式化数据

                var obj=JSON.stringify(a);

         (5)提交到后台

                 $.ajax({

                        url: "${applicationScope.rootpath}contract/savePayOffInforOfAll.action",

                        type: "post",

                        data: {'param':obj},

                        datatype: "json",

                        success: function (data) {

                            var obj = eval("(" + data + ")");

                            if (obj.success) {

                                mini.unmask();

                                alert(obj.message);

                                

                                location.reload();

                            }

                            else {

                                mini.unmask();

                                alert(obj.message);

                            }

                        }

                    });

     (6)后台解析数据

              String param = request.getParameter("param");
              JSONObject json=JSONObject.fromObject(param);
             @SuppressWarnings("unchecked")
             List<Map<String,String>> payList=json.getJSONArray("data");

        下面就能正常的list结合操作数据了

Jquery 操作 Html Table 是很方便的,这里对表格的基本操作进行一下简单的总结。

首先建立一个通用的表格css 和一个 表格Table:

table
{
border-collapse: collapse;
border-spacing: 0;
margin-right: auto;
margin-left: auto;
width: 800px;
}
th, td
{
border: 1px solid #b5d6e6;
font-size: 12px;
font-weight: normal;
text-align: center;
vertical-align: middle;
height: 20px;
}
th
{
background-color: Gray;
}


<table>
<tr>
<th style="width: 160px;">表头一</th>
<th style="width: 160px;">表头二 </th>
<th style="width: 160px;">表头三</th>
<th style="width: 160px;">表头四</th>
<th style="width: 160px;">表头五</th>
</tr>
<tr>
<td>第一行第一列</td>
<td>第一行第二列</td>
<td>第一行第三列</td>
<td>第一行第四列</td>
<td>第一行第五列</td>
</tr>
<tr>
<td>第二行第一列</td>
<td>第二行第二列</td>
<td>第二行第三列</td>
<td>第二行第四列</td>
<td>第二行第五列</td>
</tr>
<tr>
<td>第三行第一列</td>
<td>第三行第二列</td>
<td>第三行第三列</td>
<td>第三行第四列</td>
<td>第三行第五列</td>
</tr>
<tr>
<td>第四行第一列</td>
<td>第四行第二列</td>
<td>第四行第三列</td>
<td>第四行第四列</td>
<td>第四行第五列</td>
</tr>
</table>


一、鼠标移动到行更换背景色:

增加一个css样式:

.hover
{
background-color: #cccc00;
}


Js脚本:

$(document).ready(function () {
//鼠标移动到行变色,单独建立css类hover
//tr:gt(0):表示获取大于 tr index 为0 的所有tr,即不包括表头
$("#table1 tr:gt(0)").hover(
function () { $(this).addClass("hover") },
function () { $(this).removeClass("hover") })
});


 结果执行结果:



二、 表格奇偶行变色 :

奇数行和偶数行css:

.odd{ background-color: #bbf;}
.even{ background-color:#ffc; }


 Js脚本:

$(document).ready(function () {
//奇偶行不同颜色
$("#table2 tbody tr:odd").addClass("odd"),
$("#table2 tbody tr:even").addClass("even")
//或者
//$("#table2 tbody tr:odd").css("background-color", "#bbf"),
//$("#table2 tbody tr:even").css("background-color", "#ffc")
});


 结果显示:

 


三、基本操作:

(1)删除行,比如删除表格中的第二行:

//删除指定行(第二行)
$("#table3 tr:gt(0):eq(1)").remo
9f58
ve();


 (2)删除列,比如删除表格中的第二列:

//eq:获取子元素索引从 0 开始,先删除表头
$("#table3 tr th:eq(1)").remove();
//nth-child:获取子元素从 1 开始
$("#table3 tr td:nth-child(2)").remove();


 (3)删除其它行,比如第二行之外的所有行:

$("#table3 tr:gt(0):not(:eq(1))").remove();


 (4)删除其它列,比如第二列之外的所有列:

//先删除表头
$("#table3 tr th:not(:eq(1))").remove();
$("#table3 tr td:not(:nth-child(2))").remove();


 (5)隐藏行,比如隐藏第二行:

$("#table3 tr:gt(0):eq(1)").hide();
//或者
//$("#table3 tr:gt(0):eq(1)").css("display", "none")
//显示
//$("#table3 tr:gt(0):eq(1)").css("display", "");


 (6)隐藏列,比如隐藏第二列:

$("#table3 tr th:eq(1)").hide();
$("#table3 tr td:nth-child(2)").hide();
//或者
//$("#table3 tr th:eq(1)").css("display", "none");
//$("#table3 tr td:nth-child(2)").css("display", "none");
//显示
//$("#table3 tr th:eq(1)").css("display", "");
//$("#table3 tr td:nth-child(2)").css("display", "");


(7)插入新行,在表格最后的位置:

var newRow = "<tr style=\"background:red;\"><td>新行第一列</td><td>新行第二列</td><td>新行第三列</td><td>新行第四列</td><td>新行第五列</td></tr>";
$("#table3 tr:last").after(newRow);


(8)插入行,在第二行之后插入:

var newRow = "<tr style=\"background:red;\"><td>新行第一列</td><td>新行第二列</td><td>新行第三列</td><td>新行第四列</td><td>新行第五列</td></tr>";
$("#table3 tr:gt(0):eq(1)").after(newRow);


 (9)获得单元格的值,比如第二行第三列:

var v = $("#table3 tr:gt(0):eq(1) td:eq(2)").text();
//结果显示:第二行第三列


(10)获取一列的所有值,比如第二列:

var v = "";
$("#table3 tr td:nth-child(2)").each(function () {
v += $(this).text()+" ";
});
//结果:第一行第二列  第二行第二列  第三行第二列


(11)获取一行的所有值,比如第二行:

var v = "";
$("#table3 tr:gt(0):eq(1) td").each(function () {
v += $(this).text() + " ";
});
//结果:第二行第一列  第二行第二列  第二行第三列  第二行第四列  第二行第五列


(12)合并行单元格 比如合并 第二行第二个和第三个单元格:

$("#table3 tr:gt(0):eq(1) td:eq(1)").attr("colspan", 2);
$("#table3 tr:gt(0):eq(1) td:eq(2)").remove();


(13)拆分行单元格将上面合并的单元格还原:

//注意不能使用
//$("#table3 tr:gt(0):eq(1) td:eq(1)").removeAttr("colspan");
$("#table3 tr:gt(0):eq(1) td:eq(1)").attr("colspan", 1);
$("#table3 tr:gt(0):eq(1) td:eq(1)").after("<td>第二行第三列</td>")


(14)合并列单元格,比如合并第二列第二个单元格和第三个单元格

$("#table3 tr:gt(0):eq(1) td:eq(1)").attr("rowspan", 2);
$("#table3 tr:gt(0):eq(2) td:eq(1)").remove();


(15)拆分列单元格,比如将上面刚合并的单元格还原:

$("#table3 tr:gt(0):eq(1) td:eq(1)").attr("rowspan", 1);
//在下面行第一个单元格后插入单元格
$("#table3 tr:gt(0):eq(2) td:eq(0)").after("<td>第三行第二列</td>");


(16)为每个单元格增加点击事件,并弹出该单元格行索引和列索引:

$(document).ready(function () {
//点击#table3 的单元格返回 单元格索引
$("#table3 td").click(function () {
var tdSeq = $(this).parent().find("td").index($(this));
var trSeq = $(this).parent().parent().find("tr").index($(this).parent());
alert("第" + (trSeq) + "行,第" + (tdSeq+1) + "列");
})
});


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: