1

我正在使用 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>
4

2 回答 2

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>');
    });
});

演示

于 2013-04-18T01:36:55.230 回答
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>');
    });
});
于 2013-04-18T01:39:27.387 回答