Я новичок, пытающийся написать генератор отчетов JS/HTML на основе критериев, которые я отправляю в формате HTML. В конечном итоге план должен использовать PHP/mySQL для управления базой данных и возврата результатов, но пока я просто пытаюсь создать HTML/CSS/JS, и я застрял. Я приписывал функцию JS к кнопке в <body>
как так:Catch22 - HTML ждет JS, JS ждет HTML
<input type="button" id="reportButton" value="Generate Report" onclick="showCriteria()">
Я включил скрипт в <head>
следующим образом:
<script>var showCriteria = function(){ My JS code...}</script>
.
Эта функция просто делает некоторые даты манипуляции и отображает результат в DIV на той же странице, как так:
document.getElementById("endDate").innerHTML = "to "+endDay+" "+endMonthName+" "+endYear;
Но я получаю Uncaught TypeError: Cannot set property 'innerHTML' of null
. Поэтому я искал форум и обнаружил, что это иногда может быть вызвано не ожиданием загрузки окна. Поэтому я завернул сценарий следующим образом:
<script> window.onload = function() var showCriteria = function(){ My JS code...}
Это решило первоначальную ошибку, но тогда я получаю Uncaught ReferenceError: showCriteria is not defined
Похоже, я в Catch22. Я получаю первую ошибку, потому что скрипт работает до того, как окно загрузилось. Я исправляю это, ожидая, пока окно загрузится, только чтобы найти, что HTML ожидает, что мой скрипт определит мою функцию JS.
Любой совет с благодарностью получил.
Если вы не вызываете обработчик события нажатия кнопки, прежде чем загружать страницу (очевидно, маловероятно), проблема не в том, что DOM не загружен. Действительно ли элемент имеет атрибут 'id =" endDate "?? – Archer
Добавив 'window.onload', вы вывели функцию showCriteria из глобальной области. Вы не исправили предыдущую ошибку, вы только что создали другую. – user2867288
Да - элемент div имеет правильный идентификатор. – JulesGru