JQuery проблема с числами, начинающимися с нуля - PullRequest
2 голосов
/ 24 сентября 2010

В верхней части моего скрипта я создал переменную из текущей даты:

<?php $today = date('dmy'); ?>

Затем у меня есть таблица, и у каждой строки таблицы есть класс "nodate" или шестизначного числа, это число представляет дату. например, 230910 (вчера).

Я пытаюсь написать какой-нибудь jquery, который скрывает строку таблицы, если класс (шесть цифр) меньше текущей даты ($ today) в виде числа. например, если 230910 <240910 </p>

<script type="text/javascript">
    var todaysdate = "<?php echo $today;?>";
    $(document).ready(function() {
        $("#main table tr").each(function() {
            if ($(this).hasClass('nodate')) {
                $(this).css("background", "blue");
                } else {                    
                    var expire = (parseInt($(this).attr('class')));
                    alert (expire);

                    if (expire < todaysdate) {
                    $(this).css("background", "red");
                }
            }
        });

    });
</script>

Для тестирования у меня это так, если строка таблицы имеет класс "nodate", то фон меняется на синий. Затем, если дата строки таблицы (шестизначное число) меньше текущей даты, то она становится красной.

В настоящее время все строки с шестью цифрами становятся красными, и по какой-то причине, если цифры начинаются с нуля, класс выводит иначе.

например

<tr class="<?php $date = "041010";  echo $date; ?>">

Выходы как 16904: S

Может кто-нибудь помочь?

Ответы [ 2 ]

6 голосов
/ 24 сентября 2010

Число, начинающееся с нуля, анализируется как восьмеричное число (основание 8), а не как десятичное число (основание 10).

Укажите основание (основание) при разборе числа:

parseInt($(this).attr('class'), 10)

Кроме того, если у вас есть только даты в одном и том же месяце, вы должны использовать формат даты на основе ISO 8601 (ymd), например, 100924 вместо 240910.

При первой дате вы получите эффект, например 250810> 240910.

0 голосов
/ 24 сентября 2010

var todaysdate = "<?php echo $today;?>"; <--- это строка </p>

var expire = (parseInt($(this).attr('class')));
alert (expire);

expire < todaysdate <- вы сравниваете строку с целым числом </p>

...