внутренний HTML в JavaScript не работает

1

У меня есть аудиофайл и javascript.

В javascript отображается процент звукового буферирования, если нет буферизации, он отображает загрузку...

function loop2() {
  var audio2 = document.getElementById("atwo1");
  var percentages = document.getElementsByClassName("atwo1l")
  var buffered = audio2.buffered;
  var loaded;

  if (buffered.length) {
    loaded = 100 * buffered.end(0) / audio2.duration;
    if (loaded.toFixed(2) != '0') {
      percentages[0].innerHTML = 'Loading: ' + loaded.toFixed(2) + '%';
    } else {
      percentages[0].innerHTML = 'Loading....';
    }
  }

  setTimeout(loop2, 50);
}

loop2();
<audio id="atwo1" controls="controls">
  <source src="https://docs.google.com/uc?export=download&id=19gLpR7J8TVHmooVbM23eK5Xq0f9YXNZf">
</audio>
<p><span class="atwo1l"></span></p>

Но для вышеуказанного кода он не отображает loading...

Когда мы разместим небольшой аудиофайл, он отобразится. Так почему бы не для больших файлов?

Обновить:

Нашел частичный ответ ( обновленные коды)

Why a partial answer?

  • 0
    Рендеринг кода «загружен» находится внутри условия, которое срабатывает, только если есть «buffered.lengfth»
  • 0
    @sideroxylon Итак, у меня должно быть еще одно условие вне функции?
Показать ещё 20 комментариев
Теги:
html5-audio

1 ответ

0
Лучший ответ

Все комментарии вместе в ответе

function loop2() {
  var audio2 = document.getElementById("aone1"),
      percentages = document.getElementsByClassName("aone1l"),
      buffered,
      loaded;

  if (audio2 && percentages) { // if both elements are found in the DOM
    buffered = audio2.buffered;

    if (buffered.length) {
      loaded = 100 * buffered.end(0) / audio2.duration;

      if (loaded.toFixed(2) != '0') {
        percentages[0].innerHTML = 'Loading: ' + loaded.toFixed(2) + '%';
      }

      if(loaded >= 1){
         audio2.classList.remove('un-buffered');
      }
    } else { // handle the case where the buffered.length is 0 or undefined
      percentages[0].innerHTML = 'Loading....';
    }
  }

  setTimeout(loop2, 50);
}
  • 0
    Спасибо, что уделили мне свое драгоценное время. Я буду обновлять мои коды вашим кодом, а пока прошу вас посетить мой audio.php и просмотреть его. Хорошо ли иметь JavaScript, как у меня? (По-разному для всех аудиосистем) Или есть какой-то способ с одним скриптом, который будет работать для всех аудиоканалов, а все время создавать отдельный скрипт? (Аудиосистема может увеличиваться или уменьшаться). Просьба младшего к старшему.
  • 0
    Просьба помочь мне за комментарий выше
Показать ещё 7 комментариев

Ещё вопросы

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