我正在使用jquery,以及CSVtoTable(这里插件:https://code.google.com/p/jquerycsvtotable/)插件将大型CSV文件转换为我可以操作的表格。我需要附上与每一行相关的链接。
我需要转换其中一行中的文本,以添加指向pdf的链接。问题是我似乎无法修改字符串。我正在使用此处的数据:http://jsfiddle.net/bstrunk/vaCuY/297/
我的系统生成的文件名不能轻易编辑,所以我坚持使用这些格式:
所以我需要从像这样格式化的表中转换两个字符串:
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>
答案 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>');
});
});
答案 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>');
});
});