2013-12-16 3 views
0

Say мой HTML этоКак предотвратить HTML текст, появляющийся перед тем Javascript кода выполняет

<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 в внешний JS-файл, который я импортировал в html-файл. Это скрытая функция.

function hide() { 
    $('.screen').hide(); 
} 

Теперь, когда я открываю эту страницу, иногда она работает (скрывает текст сразу, так что это пустая страница) и в других случаях, текст показывает, как за одну секунду, а затем текст становится скрыт , Почему это не скрывает текст сразу в 100% случаев? будет ли он работать в 100% случаев, если я сделаю

<script type='text/javascript'> 
    $(document).ready(function() { 
     hide(); 
    }); 
</script> 

?

+0

Простым решением было бы скрыть их с помощью css: '.screen {display: none; } ' –

+0

@JasonP правильно, но есть ли способ сделать это с JS? – user2817200

+0

Просто примечание: вам не хватает цитат вокруг '.screen' в' $ (. Screen) .hide(); ' – Tomanow

ответ

4

Создайте обертку 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() i nstead of hide()

<style> 
    .screens { 
     margin: 10px; 
     display:none; 
    } 
</style> 

<script type='text/javascript'> 
    show(); 

    function show() { 
     $('.screen').show(); 
    } 
</script> 
+0

Хм, есть ли способ сделать это, не добавляя дополнительных классов? Как получилось hide(); функция работает только несколько раз? если он не работает все время? – user2817200

+0

Я отредактировал ответ. Поместите 'display: hide' в класс' .screens', если вы не можете изменить HTML (или просто не хотите). Непоследовательное поведение, которое вы видите, заключается в том, что иногда HTML заканчивает загрузку до того, как javascript имеет возможность запускать, а иногда javascript работает до того, как HTML загрузится полностью. Если вам не повезло, js может работать до того, как '.screen' будет даже загружен, поэтому элемент никогда не будет скрыт. –

+0

hm хорошо спасибо .. но о человеке, так что даже если я делаю $ (document) .ready (function() {hide();}); он по-прежнему не будет работать в 100% случаев? – user2817200

Смежные вопросы