#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>