2013-04-18 57 views
1

我正在使用jquery以及CSVtoTable(插件在這裏:https://code.google.com/p/jquerycsvtotable/)插件將大型CSV文件轉換爲我可以操作的表格。我需要附上與每一行相關的鏈接。JQuery使用單元格數據改造單元格

我需要轉換其中一行中的文本以添加到pdf的鏈接。問題是我似乎無法修改字符串。我使用的是在這裏找到這樣的數據:http://jsfiddle.net/bstrunk/vaCuY/297/

通過我的系統生成的文件名不能輕鬆編輯,所以我堅持使用這些格式:

  • 423-1.pdf

所以我需要兩個字符串格式化從像這樣的錶轉換:

  • 2013年4月23日

下降的一年,以及斜線,並添加一個「 - 」,然後額外的數字。 我能搶到表中的數據,我剛纔似乎不得爲.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

你可以發佈一個示例表格行的HTML嗎? –

+0

上面添加了示例表格數據(感謝您的閱讀!)。 – bstrunk

回答

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來尋找第六屆細胞,但哪裏?你應該指定一個像父:

$("#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

+0

謝謝,特別是詳細的解釋。我只是選擇了JQuery,顯然我需要花更多時間學習。感謝工作代碼和解釋! – bstrunk

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>'); 
    }); 
}); 
相關問題