Ваш код:
document.getElementById('hercule')
ищет элемент DOM с id="hercule"
. Очевидно, ваша страница не содержит такого элемента во время выполнения custom.js
, поэтому document.getElementById('hercule')
возвращает ноль, а затем выдается ошибка TypeError при вызове метода addEventListener
для нулевого объекта.
Найдите на своей странице HTML элемент, содержащий id="hercule"
. Если вы не можете найти его, ваша проблема была идентифицирована.
Редактировать:
Последующая информация показывает, что пользовательский код. js JavaScript пытается получить доступ к div с id = "hercule", прежде чем он существует. Решение состоит в том, чтобы отложить запуск пользовательской функции до появления div.
Обычно достаточно ожидания события load
окна, но в данном случае неясно, что будет работать как "геркулес". может генерироваться другой JavaScript функцией, которая не завершится к моменту события load
.
Одно из решений - просто продолжать искать «геркулеса», пока не будет найдено:
// USE THIS SECTION IN YOUR CODE:
// keep looking for "hercule"
function lookForHercule() {
const hercule = document.getElementById('hercule');
if (hercule) {
// add the 'click' listener to 'hercule'
hercule.addEventListener('click', function() {
hercule.innerHTML = "You clicked hercule, redirecting to somedomain.com";
location.href = 'https://somedomain.com'
}, false);
return;
}
console.log('"hercule" not found');
setTimeout(lookForHercule, 2000);
}
// start looking
lookForHercule();
// END OF SECTION TO USE IN YOUR CODE
// THE CODE BELOW IS FOR THIS DEMO ONLY, DO NOT USE IN YOUR CODE:
// FOR DEMO ONLY:
// add 'hercule' after 10 seconds to simulate delay
setTimeout(() => {
const wrapper = document.getElementById('wrapper');
const hercule = document.createElement('div');
hercule.id = 'hercule';
hercule.innerHTML = "I am hercule. Clicking me will redirect to somedomain.com";
wrapper.appendChild(hercule);
}, 10000);
/* this will change cursor to finger when hovering over hercule */
#hercule:hover {
cursor: pointer;
}
<div id="wrapper">
<h4>Search for 'hercule'</h4>
</div>