2012-01-16 10 views
3

私は動的に生成されたいくつかのデータを持つテーブルを持っています。問題は数値型(書式付きまたは非書式)のデータ型を持ち、何らかのスタイルを適用するすべての<td>'sを選択することです。 jQueryやJavaScriptを使ってこれをどのようにするのが最適でしょうか? ご意見やご提案をいただければ幸いです。ありがとうございました。テーブルから数値を含むtdを選択してください

<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

どのようにして、ゼロ以上の数字またはカンマや<td>要素内の小数点を数字に一致するように、単純な正規表現を使用しています

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

のようなものについて。次に、あなたが要素上で好きな動作を実行することができます。

+0

これは完全に驚くべきです。まさに私が欲しいもの。ありがとう@rfausak –

+0

@ciriusrob答えを受け入れる必要があります。 –

4

あなたは彼らがサーバ側に生成されたときにちょうどそれらのtd秒にクラスを追加したほうが良いと思います。それはオプションがない場合は

、あなたは正規表現で.filter()を使用することができます。

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

はここでフィドルです:メッセージテキスト内の1つのとないの見出しであるhttp://jsfiddle.net/m7gQL/

+0

クール。これは素晴らしい作品です。ありがとう@Silber –

1

質問を想定すると、ベストショットはおそらく、数値データを含むセルに適切なクラス属性を割り当てることです。これは、表形式のデータを生成するときに最も効果的です。なぜなら、生成するデータの種類を知る必要があるからです。これが不可能な場合は、セルを処理し、数字のパターンに従ってコンテンツ(完全に含む)を解析しようとするループを記述する必要があります。表示される可能性のある数値データの種類を指定する必要があります(整数やその他の表記法、表記法など)。

+0

サーバ側で生成された 'html table'は、カラムとローの数については予測できません。それは、結果セットに基づいて、サーバー側コードが影響を受ける 'SQLテーブル 'の数を数え、' htmlテーブル 'のための列を生成するために、部門ごとに異なるレポートのための複雑な' sql query'から生成される –

0

セルに数値が含まれている場合でも、列のデータ型はまだ、たとえば、文字列であるかもしれないので、あなたは、生成されたHTMLを見て、これを行うことはできません。代わりに、HTMLを生成するときにこの情報を出力する必要があります。だから、数値データ型を持つ細胞は、属性に

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

になるだろうとnumeric

td.numeric { ... } 
0

はこの試してみてのように定義されます。

$(document).ready(function(){ 
    $('table td').each(function(){ 
    if (!isNaN($(this).html().replace(',',''))) 
    { 
     $(this).css('background-color', 'green'); 
    } 
    }) 
}); 
関連する問題