Javascript время / проблема цикла? - PullRequest
2 голосов
/ 11 октября 2011

У меня есть этот код, который берет некоторую спортивную статистику из базы данных и обновляет ее - и я пытаюсь выдать предупреждение (div #scorealert) при обнаружении изменения. Это прекрасно работает, если изменился только один счет. Когда есть несколько изменений, он отображает неправильное имя - он продолжает отображать последнее значение и не меняет имя.

Все еще начинающий с javascript / ajax и обучения .. пожалуйста, будьте нежны.

Спасибо!

function getscores() {

  $.post("/get_live_scores.php", {e: <?=$entryid;?>}, function(celldata) {

    data = jQuery.parseJSON(celldata);
    $.each(data, function(i,item) {
        var pname = data[i].pname;
        var cell = data[i].key;
        var save_val = data[i].save_val;
        var wins = data[i].wins;
        var shutouts = data[i].shutouts;
        var goals = data[i].goals;
        var assists = data[i].assists;
        var ht = data[i].ht;
        var gwg = data[i].gwg;

        if ($('td#'+cell+'_goals').text() < goals) {
            $('div#scorealert').html('Goal by '+data[i].pname);
            $('div#scorealert').animate({left: '0px'});
            $('div#scorealert').delay(4000).animate({left: '-300px'});
        }
        updatecell(pname, cell, save_val, wins, shutouts, goals, assists, ht, gwg); 


    });

    updatetotal();
  });
}    

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Я буду честен;Я не понимаю, почему он отображает только первое.Насколько я могу судить, должно отображаться последнее.Причина в том, что в каждом цикле вы вызываете .html() для div, который заменит содержимое этого оповещения div новым содержимым.Если только функция .delay() не прерывает синхронизацию этого события?

Я бы добавил ваши бомбардиры (и т.д.) в div с помощью .append () или другой неразрушающей функции добавления DOM, а затемвызвать анимацию (заполненную всеми счетчиками) после завершения цикла.

[отредактировано для добавления результатов обсуждения комментариев:]

Поскольку .append () добавляет их все в один и тот же divчто не было желаемым эффектом), способ хранить их в отдельных контейнерах оповещений - динамически создавать эти контейнеры по мере необходимости.

0 голосов
/ 11 октября 2011

Пожалуйста, проверьте e: <?=$entryid;?>

Это сгенерировано из php? если это правда, он не изменится после того, как php сгенерирует его и отправит в браузер. поэтому ваш JavaScript всегда будет иметь одинаковое значение и всегда публиковать одни и те же данные.

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