Как изменить цвет в fade-in и fade-out в div при обновлении данных с помощью sse

#javascript #css #html

#javascript #css #HTML

Вопрос:

При обновлении данных в div у меня работает эффект fade-in fade-out. Но я хочу изменить цвета во время выполнения функции fade-in fade-out, чтобы привлечь внимание к изменяющемуся значению.

Текст меняет цвет, но в нем всегда используется последний используемый цвет. Я не могу получить желаемый эффект изменения цвета

как я могу это сделать?

Это html-страница:

 <!DOCTYPE html>
<html>
    <head>
    </head>
    <body>

        <div id="result">Loading data. Please, wait...</div>

        <script type="text/javascript">
            if(typeof(EventSource) !== "undefined") {
                var source = new EventSource("demo_sse.php");

                source.addEventListener('message', function(e) {
                    if (!is_stopped) {
                        $('#result').css('color', 'green');
                        $('#result').fadeOut(1000); 
                        $('#result').css('color', 'red');
                        $('#result').html(event.data   "<br>");
                        $('#result').css('color', 'blue');
                        $('#result').fadeIn(1000);
                    }
                }, false);

                source.addEventListener('open', function(e) {
                    // Connection was opened.
                    //alert('Connection opened');
                }, false);

                source.addEventListener('close', function(e) {
                    // Connection was opened.
                    alert('Connection closed');
                }, false);

                source.addEventListener('error', function(e) {
                    if (e.readyState == EventSource.CLOSED) {
                    // Connection was closed.
                        alert('Connection closed');
                    }
                }, false);

            } else {
                document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
            }
        </script>
    </body>
</html>
  

и это файл php:

 <?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "retry: 4000n";
echo "data: The server time is: {$time}nn";
//error_log('XXXX');
flush();
?>
  

Ответ №1:

@PeterPam — давайте попробуем разбить это на действительно конкретный маленький кусочек головоломки.

Можете ли вы просто написать, к чему вы стремитесь?

  1. Данные исчезают
  2. в элемент вставляются новые данные
  3. цвет изменяется / или исчезает с ______ на _______
  4. и т.д…

Это помогло бы. : ) — вот попытка упростить до самого маленького примера.

 <div id="result">starting thing</div>
<button>do it</button>
  

..

 function doThings() {
  $('#result')
    .css('color', 'green')
    .fadeOut(1000)
    .css('color', 'red')
    .html('other-thing')
    .css('color', 'blue')
    .fadeIn(1000)
  ; // (also) you can 'chain' them like this
}

$('button').on('click', doThings);
  

вот этот пример: https://jsfiddle.net/sheriffderek/8w21gfam /

и вот возможное направление: https://jsfiddle.net/sheriffderek/qmhf3vwL /

.fadeOut(duration, optionalCallback) {} — ознакомьтесь с подробностями подписи функции. Вы можете использовать обратный вызов.

помогите конкретизировать ожидания анимации. : )

Комментарии:

1. ключ — это обратный вызов при затухании. Спасибо!