Если скрипт находится в заголовке вашего HTML-документа, тело вашего HTML-документа еще не было создано браузером, независимо от того, что будет в итоге (такой же результат происходит, если ваш скрипт находится в файле HTML но над элементом). Когда ваша переменная пытается найти document.getElementById ("status"), она еще не существует и поэтому возвращает значение null. Когда вы позже используете переменную в своем коде, используется начальное значение (null), а не текущее, потому что переменная ничего не обновила.
Я не хотел перемещать ссылку на скрипт из заголовка HTML, поэтому вместо этого я сделал это в своем файле JS:
var idPost //define a global variable
function updateVariables(){
idPost = document.getElementById("status").innerHTML; //update the global variable
}
И это в HTML-файле:
<body onload="updateVariables()">
Если у вас уже есть функция onload, вы можете просто добавить в нее дополнительную строку или вызвать функцию.
Если вы не хотите, чтобы переменная была глобальной, определите ее локально в функции, которую вы пытаетесь запустить, и убедитесь, что функция не вызывается до полной загрузки страницы.