私の最終的な回答については、最後の編集を参照してください。良い質問をすることの重要性を示すために残りを残しておきます. それは多くの時間を節約したでしょう。
jQuery を使用すると、各テーブル セルを反復処理し、値を確認して、出力内容を変更できます。実際のデータを変更するよりも、これを好みます。データはそのままにして、ここでの表示方法のみを変更することをお勧めします。
$("#test td").each(function() {
if ($(this).html() == "0") {
$(this).html("");
}
});
ここで実際の動作を見ることができます。
アップデート:
一部の のみ<td>
を変更する必要がある場合は、それらのクラスを使用することをお勧めします。
$(".noZeroAllowed").each(function() {
if ($(this).html() == "0") {
$(this).html("");
}
});
次のような HTML で動作します。
<table id="test">
<tr>
<td class="noZeroAllowed">10</td>
<td class="noZeroAllowed">5</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td class="noZeroAllowed">11</td>
<td class="noZeroAllowed">0</td>
<td>9</td>
<td>7</td>
</tr>
</table>
更新された fiddleも参照してください。
更新 2 :
データがアトミックではなく、次のようにセルに複数の値がある場合:
<table id="test">
<tr>
<td class="noZeroAllowed">10 0 foobar 0</td>
<td class="noZeroAllowed">5</td>
<td>0, 0, 0</td>
<td>1</td>
</tr>
</table>
次に、代わりに正規表現を使用するように Javascript を変更する必要があります。は\b
単語境界を意味します。ただし、小数では機能しません0.5
。
$(".noZeroAllowed").each(function() {
var newStr = $(this).html().replace(/\b0\b/g, "");
$(this).html(newStr);
});
更新された fiddleを参照してください。
更新 3:
<b>
これにより、関連するクラス s のタグ内のすべてのゼロが<td>
空の文字列に変わりますが、最後のゼロはそのまま残ります。
$(".noZeroAllowed").each(function() {
var zeros = new Array;
var b = $(this).find("b");
for (var i = 0; i < b.length; i++) {
$(b[i])
if ($(b[i]).html() == "0") {
zeros.push(b[i]);
}
}
for (var i = 0; i < zeros.length - 1; i++) {
$(zeros[i]).html("");
}
});
こちら を参照してください。