Как заставить этот код jQuery работать в версии 3.2.1

#javascript #jquery #css

#javascript #jquery #css

Вопрос:

У меня есть функция, которая может загружать бесплатные ресурсы и применять или изменять мою работу. Я использовал эту функцию для создания своего веб-сайта, установив для всех divs значение display=none и нажав на кнопку, появится соответствующее отображение div style block .

Все работало нормально, пока я не добавил музыкальный проигрыватель, создатель которого использовал более высокую библиотеку jQuery (3.2.1> 1.5.2).

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

Ошибка отладчика :

неперехваченная ошибка типа: document.getElementById не является функцией

Но если я не нажимаю на кнопку воспроизведения, все нормально.

 function openPage(pageName) {
  var i;
  var x = document.getElementsByClassName("page");
  for (i = 0; i < x.length; i  ) {
    x[i].style.display = "none";  
  }
  document.getElementById(pageName).style.display = "block";  
}
  

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

1. из моих небольших знаний я думаю, потому что этот код не совместим с современным jquery, поэтому у него есть какой-либо способ его улучшить

2.Ваш вопрос трудно понять, потому что вы не использовали знаки препинания. Нет причин, по которым это document.getElementById не должно работать.

Ответ №1:

Jquery не препятствует нормальной работе ванильного Javascript.
И поскольку ваш код — это просто Javascript, и, судя по тому, что в нем нет ошибок, трудно понять, почему такая ошибка появится. Это не имеет ничего общего с Jquery.

Единственной предсказуемой ошибкой будет:

  • Имя страницы не передается в качестве аргумента;
  • Имя страницы передается, но не является строкой;
  • в вашем документе не существует элемента с идентификатором, равным значению имени страницы.
  • Вы могли бы немного улучшить свой код, написав его таким образом:

     function openPage(pageName) {
        Array.from(document.getElementsByClassName('page')).map(page => page.style.display = 'none');
        document.getElementById(pageName).style.display = "block";  
    };
      

    Вы могли бы сделать его «более защищенным», добавив некоторые проверки:

     function openPage(pageName) {
        if (pageName amp;amp; (typeOf pageName === 'string')) {
            Array.from(document.getElementsByClassName('page')).map(page => page.style.display = 'none');
            var target = document.getElementById(pageName);
            if (target) { target.style.display = "block" };
        }
    };
      

    И вы могли бы улучшить его, также войдя в консоль, когда проверка не удалась, для отладки:

     function openPage(pageName) {
        if (pageName amp;amp; (typeOf pageName === 'string')) {
            Array.from(document.getElementsByClassName('page')).map(page => page.style.display = 'none');
            var target = document.getElementById(pageName);
            if (target) { 
                target.style.display = "block" 
            } else {
                console.log('No element found, with the ID of:' , pageName)
            };
        } else {
            console.log('Error in openPage() : The provided [pagename] argument must be a [string]. Provided value for [pageName] is:', pageName);
        }
    };
      

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

    1. спасибо за помощь, я постараюсь улучшить ваш код, но он работает не так, как мой предыдущий код, но когда я нажимаю на функцию воспроизведения звука, каждая «openPage» прерывается, поэтому я думаю, что теперь проблема в моем другом файле .js: (так что, если у вас есть время, но все в порядке, если нет// я очень ценю этот ответ toyr выше 🙂 github.com/greghub/green-audio-player