Во-первых, лучший способ сделать это, если числа статичны, находится на стороне сервера. Назначьте класс на основе значения:
<td class="positive">+34</td>
<td class="negative">-33</td>
с:
td { color: black; }
td.positive { color: green; }
td.negative { color: red; }
(или быть более избирательным, если вам нужно).
Но если вы должны сделать это на клиенте, я мог бы предложить:
$("td").each(function() {
var text = $(this).text();
if (/[+-]?\d+(\.\d+)?/.test(text)) {
var num = parseFloat(text);
if (num < 0) {
$(this).addClass("negative");
} else if (num > 0) {
$(this).addClass("positive");
}
}
});
Возможно, вам придется настроить регулярное выражение в зависимости от того, какие числа вы хотите поймать (например, 1.2e11 или 3456).
Почему регулярное выражение, а не просто parseFloat()
? Потому что:
parseFloat("34 widgets");
возвращает 34. Если это нормально, используйте это и пропустите тест регулярного выражения.