#javascript #html #jsp #button
Вопрос:
Я хочу установить видимость кнопки на основе того, что я получаю из атрибута сеанса в window.onload.. Появится предупреждение, поэтому кнопка должна стать невидимой.. Пожалуйста, дайте мне знать, почему он все еще виден.
<button type="button" id="ex" onclick="">Ex</button>
<script>
window.onload = function(){
<%
Object ex = session.getAttribute("ex");
if (ex == null)
{
%>
alert("NULL");
document.getElementById('ex').style.visibility = 'hidden';
<%
}
else
{
%>
alert("NOT NULL");
<%
}
%>
};
</script>
Комментарии:
1. Интересно, работает ли ваш js быстрее, чем браузер может отображать html. Если вы поставите
console.log(document.getElementById('ex'))
после предупреждения, оно поднимет его?2. Спасибо. Нет, я только что проверил, и журнал консоли не появился. Как мне следует поступить ?
3. Вместо того , чтобы использовать
window.onload
, используйтеdocument.addEventListener("DOMContentLoaded", function(e) { YOUR_CODE });
. Вы хотите убедиться, что DOM завершил загрузку, прежде чем начинать вызывать элементы из него.4. Огромное спасибо.
5. Теоретически говоря, не должно быть проблем с тем, что элемент не загружается, потому что а)
load
событие окна всегда срабатывает послеDOMContentLoaded
и б) сценарий помещается после кнопки, поэтому браузер должен отобразить кнопку перед выполнением сценария.