Когда я загружаю javascript из отдельного файла, он не работает должным образом, но когда я загружаю тот же сценарий изнутри файла
var button = document.querySelector("button");
var p = document.querySelector("p");
button.addEventListener("click",function(){
p.textContent = "Someone Clicked";
});<!DOCTYPE html>
<html>
<body>
<script type = "text/javascript" src = "listen.js"></script>
<a href = "https://www.google.co.in">My Link</a>
<img src = "logo.png">
<button>Click Me</button>
<p>No one Has Clicked yet!</p>
</body>
</html>ge работает правильно.
Попробуйте добавить document.addEventListener ("DOMContentLoaded", функция (событие) {console.info ("DOM полностью загружен и проанализирован");});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы загружаете файл js в заголовок и выбираете кнопку и тег p, которые в то время не присутствуют в DOM. либо вы можете загрузить свой скрипт внизу страницы следующим образом:
`<body>
<a href = "https://www.google.co.in">My Link</a>
<img src = "logo.png">
<button>Click Me</button>
<p>No one Has Clicked yet!</p>
<script type = "text/javascript" src = "listen.js"></script>
</body>`
или вы можете поместить свой скрипт в функцию window.onload (). Он будет ждать загрузки страницы, а затем запустит ваш код.
window.addEventListener('load', function () {
var button = document.querySelector("button");
var p = document.querySelector("p");
button.addEventListener("click",function(){
p.textContent = "Someone Clicked";
});
}, false);
Большое спасибо
Мы не можем помочь вам без дополнительной информации, но я предполагаю, что вы помещаете свой скрипт перед своей DOM. Страница отображается по порядку сверху вниз. Ваш Javascript-файл должен находиться под домом, с которым он взаимодействует. Если ваш тег скрипта находится над элементами, которые вы пытаетесь использовать, то
document.querySelector("button")вернет undefined, что приведет к тому, чтоbutton.addEventListenerсгенерирует исключение. Проверить консоль (F12)