JQuery使用细胞数据改造细胞

时间:2013-04-18 00:43:09

标签: javascript jquery

我正在使用jquery,以及CSVtoTable(这里插件:https://code.google.com/p/jquerycsvtotable/)插件将大型CSV文件转换为我可以操作的表格。我需要附上与每一行相关的链接。

我需要转换其中一行中的文本,以添加指向pdf的链接。问题是我似乎无法修改字符串。我正在使用此处的数据:http://jsfiddle.net/bstrunk/vaCuY/297/

我的系统生成的文件名不能轻易编辑,所以我坚持使用这些格式:

  • 423-1.pdf

所以我需要从像这样格式化的表中转换两个字符串:

  • 2013年4月23日

  • 1

删除年份以及斜杠,然后添加' - '然后添加额外的数字。 我能够获取表数据,我似乎无法使用.replace或.substr来操纵变量

$(document).ready(function () {
    $("tr td:nth-child(5)").each(function () {
        var $docket = $('td=eq(5)');
        var $td = $(this);
        var $dataDate = $td.substr(0, $td.lastIndexOf("/"));
        var $newDataDate = $dataDate.replace("/", "");
        $td.html('<a html="./docs/' + $newDataDate.text() + '-' + $docket.text() + '.pdf">' + $td.text() + '</a>');
    });
});

(编辑):样本表数据:

<tr><td>13CI401111</td><td>22</td><td>Name1</td><td>Name2</td><td>4/23/2013</td><td>1</td></tr>
<tr><td>13CI401112</td><td>22</td><td>Name1</td><td>Name2</td><td>4/24/2013</td><td>2</td></tr>

2 个答案:

答案 0 :(得分:1)

首先正确设置表格ID:

<table id="CSVTable">

然后使用右选择器选择每行中的第5个单元格:

$("#CSVTable tr td:nth-child(5)") //note that we need to tell Jquery to look for the cells inside `CSVTable` otherwise it will search the whole document

每个变量的开头都不需要美元符号且没有任何意义,您可以将其删除 这不会起作用:

var $docket = $('td=eq(5)');

它告诉jquery寻找第6个细胞,但在哪里?您应该指定父类:

$("#CSVTable tr td:nth-child(6)");

但我们只需要在each函数中已选择的单元格的下一个单元格,因此更好的方法是使用next()方法直接选择下一个td:

$(this).next('td');

完整代码:

$(document).ready(function () {
    $("#CSVTable tr td:nth-child(5)").each(function () {
        var td = $(this),
            docket = td.next('td').text(),
            dataDate = td.text(),
            newDate = dataDate.substr(0, dataDate.lastIndexOf('/')).replace("/", '');

        td.html('<a href="/docs/' + newDate + '-' + docket + '.pdf">' + dataDate + '</a>');
    });
});

Demo

答案 1 :(得分:1)

Bstrunk,试试这个:

$(function() {
    $("tr").each(function () {
        var $tr = $(this);
        var $td_date = $tr.find('td').eq(4);
        var $td_docket = $tr.find('td').eq(5);
        var dateArr = $td_date.text().split("/");
        $td_date.html('<a html="./docs/' + dateArr[0] + dateArr[1] + '-' + $td_docket.text() + '.pdf">' + $td_date.text() + '</a>');
    });
});