Обычно я не рекомендую этого, но, вероятно, где-то вдоль строки либо сценарии asyn c не выполняются в заданной последовательности, либо теги сценариев не загружаются в заданной последовательности. В любом случае, вызываемая вами функция вызывается до того, как элемент div станет доступен. Один из способов - опросить в течение разумного периода времени и затем выполнить вашу функцию, как только элемент станет доступен. Например:
function getButton(){
let poll = (res)=>{
let div = document.getElementById("buttons");
if (div) {
res(div);
} else {
window.requestAnimationFrame(function(){poll(res);});
}
};
return new Promise(function(res){poll(res);})
}
Чтобы использовать
getButton()
.then(function(div){
el.addEvenlistener("click",getAndFormatNewReviewForm,false);
})
div
, это "кнопки", el будет тем, к чему вы прикрепили getAndFormatNewReviewForm
. Измените «щелчок» на любое событие, которое вы хотите.
Имейте в виду, что это решение для утиной ленты, вам также необходимо разработать сценарий для завершения при необходимости.