Скажем, мой html это
<div class='screen'>
<p>*A lot of text here*</p>
</div>
<div class='screen'>
<p>*More text and some images here*</p>
</div>
<div class='screen'>
<p>*Even more text and an image here*</p>
</div>
и прямо под моим html, у меня есть это
<style>
.screens {
margin: 10px;
}
</style>
<script type='text/javascript'>
hide();
</script>
Теперь функция javascript hide находится во внешнем JS файле, который я импортировал в html файл. Это скрытая функция.
function hide() {
$('.screen').hide();
}
Теперь, когда я открываю эту страницу, иногда она работает (она прячет текст сразу, так что это пустая страница), а в других случаях текст отображается как одна секунда, а затем текст становится скрытым. Почему это не скрывает текст сразу в 100% случаев? будет ли он работать в 100% случаев, если я это сделаю
<script type='text/javascript'>
$(document).ready(function() {
hide();
});
</script>
?
Создайте обертку div и дайте ей display:none;
, При необходимости отобразите его с помощью show()
CSS:
.wrapper{ display:none;}
HTML:
<div class="wrapper>YOUR CONTENT</div>
Javascript
$(document).ready(function(){
$(".wrapper").show();
});
Или, если вам просто .screen
, измените его CSS, чтобы display:none
и javascript для show()
вместо hide()
<style>
.screens {
margin: 10px;
display:none;
}
</style>
<script type='text/javascript'>
show();
function show() {
$('.screen').show();
}
</script>
display:hide
в класс .screens
если вы не можете изменить HTML (или просто не хотите). Непоследовательное поведение, которое вы видите, заключается в том, что иногда HTML завершает загрузку до того, как у javascript появляется возможность запуска, а иногда javascript запускается до полной загрузки HTML. Если вам не повезло, js может запуститься до .screen
как загрузится .screen
, поэтому элемент никогда не будет скрыт.
.screen { display:none; }