Выберите тд, который содержит числовые значения из таблицы - PullRequest
3 голосов
/ 16 января 2012

У меня есть таблица с некоторыми динамически генерируемыми данными.Проблема в том, что я хочу выбрать все <td>'s, которые имеют числовой (форматированный или неформатированный) тип данных, и применить к ним некоторый стиль.Как лучше всего это сделать с помощью jQuery или JavaScript?Любая помощь или предложения будут оценены.Спасибо.

<table>
<tr>
    <th>Days</th>
    <th>Booth 1</th>
    <th>Booth 2</th>
    <th>Booth 3</th>
</tr>
<tr>
    <td>Monday</td>
    <td>12,000</td>
    <td>2,500</td>
    <td>0</td>
</tr>
<tr>
    <td>Tuesday</td>
    <td>4,200</td>
    <td>0</td>
    <td>3,500</td>
</tr>
<tr>
    <td>Wednesday</td>
    <td>Out Of Order</td>
    <td>Busy</td>
    <td>11,540</td>
</tr>
</table>

Ответы [ 5 ]

5 голосов
/ 16 января 2012

Как насчет чего-то вроде

$('td').each(function () {
    if ($(this).html().match(/^\s*\d[\d,\.]*\s*$/)) {
        $(this).css('background-color', 'red');
        // TODO: something cool
    }
});

, в котором используется простое регулярное выражение для сопоставления цифры, а затем нуля или более цифр или запятых или десятичных точек внутри элементов <td>.Затем вы можете выполнить любое действие над элементом.

4 голосов
/ 16 января 2012

Было бы лучше просто добавить класс к этим td s, когда они генерируются на стороне сервера.

Если это не вариант, вы можете использовать .filter() с регулярным выражением:

$('td').filter(function(){
    return /^[.,\d]+$/.test( $.text(this) );
})
.css('color', 'blue'); // or anything else...

Вот скрипка: http://jsfiddle.net/m7gQL/

1 голос
/ 16 января 2012

Предполагая, что вопрос задан в тексте сообщения, а не в заголовке, лучше всего назначить подходящий атрибут класса для ячеек, содержащих числовые данные. Это лучше всего делать при генерации табличных данных, так как там вы должны знать, какой тип данных вы генерируете. Если это невозможно, вам может понадобиться написать цикл, который обрабатывает ячейки и пытается проанализировать их содержимое (все содержимое) в соответствии с шаблоном чисел. Вам необходимо указать тип числовых данных, которые могут отображаться (например, просто целые числа или что-то еще? И какие обозначения?).

0 голосов
/ 16 января 2012

Попробуйте:

$(document).ready(function(){
  $('table td').each(function(){
    if (!isNaN($(this).html().replace(',','')))
    {
      $(this).css('background-color', 'green');
    }
  })
});
0 голосов
/ 16 января 2012

Вы не можете сделать это, посмотрев на сгенерированный HTML, потому что даже если ячейка содержит число, тип данных столбца может быть, скажем, String. Вместо этого вы должны вывести эту информацию при генерации HTML. Таким образом, ячейки с числовыми типами данных получат атрибут

<td class="numeric"> ... </td>

И numeric будет определяться как

td.numeric { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...