SetInterval воспроизводить звук, если класс существует

1

Я сделал этот фрагмент, где это должно искать, если внутри div есть элемент с классом "card-new-order"

Div с id "comenzi" обновляется каждые 5 секунд и обновляет карты внутри и их классы.

Если карта с классом найдена, воспроизводите звук, пока скрипт не сможет найти этот элемент.

Вот мой код, но почему-то не может заставить его работать.

var audio = document.getElementById("ring");
setInterval(function(){ 
    $('#comenzi').load(document.URL +  ' #comenzi'); 
    $('.contents > .card').each(function(i) {
        if($(this).hasClass('card-new-order')){
            audio.play();
        }else{
            audio.pause();
        }
    });

}, 5000);
  • 0
    Вы можете быть более точным с тем, что как-то не работает? у вас есть ошибка в консоли браузера?
Теги:
setinterval

1 ответ

0

Похоже, вы пытаетесь воспроизвести/приостановить свой аудиоэлемент до завершения метода load().

Подумайте о пересмотре кода, чтобы воспроизведение или пауза звука происходили, когда содержимое операции load() доступно. Вы можете сделать это, используя обратный вызов success метода load():

var audio = document.getElementById("ring");
function refresh(){ 

    // Pass a success callback function to load() which is run after
    // the load has succeeded. Also, remove the whitespace before #comenzi
    $('#comenzi').load(document.URL +  '#comenzi', function() {

    // The loaded content from document.URL#comenzi have loaded and
    // can now be accessed
    $('.contents > .card').each(function(i) {

        if($(this).hasClass('card-new-order')){
            audio.play();
        } else {
            audio.pause();
        }
    });

    // Start the next cycle after the contents have loaded
    setTimeout(refresh, 5000)
    });     
}

// Start the refresh cycle
refresh();

Другое предложение, показанное выше, заключается в том, чтобы использовать setTimeout а не setInterval чтобы гарантировать, что следующее обновление произойдет после загрузки содержимого из load(). Подход, основанный на setInterval запускает риск одновременного выполнения вызовов refresh() (что произойдет, если сервер, возвращающий содержимое на #comenzi больше 5 секунд, чтобы ответить и т.д.),

Надеюсь это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню