Неперехваченная ошибка типа: downloadButton имеет значение null

#javascript #button

#javascript #кнопка

Вопрос:

Я добавил кнопку загрузки на несколько страниц, которая появляется через 10 секунд с помощью этого кода (нижний колонтитул темы):

 <script>
var downloadButton = document.getElementById("download2");
    var counter = 10;
    var newElement = document.createElement("p");
    newElement.innerHTML = "10 seconds";
    var id;
    downloadButton.parentNode.replaceChild(newElement, downloadButton);
    id = setInterval(function() 
    {counter--;
    if(counter < 0) {
    newElement.parentNode.replaceChild(downloadButton, newElement);
    clearInterval(id);
    } else {
    newElement.innerHTML = " "   counter.toString()   " seconds";
    }}, 1000);
</script>
 

Он работает нормально. Однако на любой странице, на которой нет кнопки, я получаю сообщение об ошибке «Uncaught TypeError: downloadButton имеет значение null». Означает ли это, что скрипт загружается везде и на страницах без кнопки загрузки выдает эту ошибку?
Я попытался обернуть скрипт в готовую функцию с

 $( document ).ready(function() {
});
 

но я не смог заставить его работать. Кто-нибудь может мне здесь помочь? Заранее благодарю вас.

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

1. » Однако на любой странице, на которой нет кнопки […] » — я думаю, вы уже видели свою проблему 😉 Простой if (downloadButton) (или аналогичный) перед выполнением остальной части вашего кода должен решить эту проблему

2. Спасибо, это исправлено 🙂

3. Нет проблем 🙂 Другим решением было бы включать этот блок кода только там, где это требуется, но это может быть немного сложнее. Я бы потратил некоторое время, чтобы разобраться в этом if() , хотя это проверка безопасности, в то время как условия включения немного более логичны.

4. Да, я думаю, это было бы лучше, но я не знаю, как это сделать прямо сейчас. С функцией if это работает, но кнопка появляется за секунду до начала таймера. Нужно некоторое время, чтобы проверить наличие кнопки, я думаю? Еще раз спасибо

Ответ №1:

Добавление оператора if для проверки, существует ли у вас downloadButton или нет, решит вашу проблему.

     <script>
    var downloadButton = document.getElementById("download2"); 
    if( downloadButton ){
      //rest of your code goes inside.
    }
    
</script>