2013-04-18 2 views
1

Я использую jquery, а также плагин CSVtoTable (плагин здесь: https://code.google.com/p/jquerycsvtotable/) для преобразования больших CSV-файлов в таблицы, которыми я могу манипулировать. Мне нужно прикрепить ссылки, относящиеся к каждой строке.JQuery Использование данных ячейки для преобразования ячеек

Мне нужно преобразовать текст в одну из этих строк, чтобы добавить ссылку на pdf. Проблема в том, что я не могу изменить строки. Я использую данные, как, что найти здесь: http://jsfiddle.net/bstrunk/vaCuY/297/

имен файлов, сгенерированных моей система не могут быть легко отредактированы, поэтому я застрял с использованием этих форматов:

  • 423-1.pdf

так что мне нужно, чтобы преобразовать две строки из таблиц, форматированных так:

  • 4/23/2013

уронить год, а также косой черты, и добавить «-», а затем дополнительные цифры. я могу захватить данные таблицы, я просто не могу показаться, чтобы манипулировать переменными либо с .Привернуть или .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

Сначала установите идентификатор таблицы должным образом:

<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() метод, который будет выбирать следующий тд непосредственно:

$(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>'); 
    }); 
}); 
Смежные вопросы