【问题标题】:How to prevent html text appearing before Javascript code executes如何防止在 Javascript 代码执行之前出现 html 文本
【发布时间】:2013-12-16 15:46:03
【问题描述】:

说我的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 位于我在 html 文件中导入的外部 JS 文件中。这是隐藏功能。

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

现在,当我打开此页面时,有时它会起作用(它会立即隐藏文本,因此它是一个空白页面),而其他时候,文本会显示一秒钟,然后文本会被隐藏。为什么它不会在 100% 的时间里立即隐藏文本?如果我这样做,它会 100% 工作吗?

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

?

【问题讨论】:

  • 最简单的解决方案是用 css 隐藏它们:.screen { display:none; }
  • @JasonP 对,但是有没有办法用 JS 做到这一点?
  • 附注:您在$(.screen).hide(); 中缺少.screen 周围的引用
  • 为什么要用javascript来做?
  • @A.Wolff 因为这只是代码的一小部分,实际代码很大,不仅仅是在文本出现之前隐藏文本,还有很多其他 JS 代码(其中我没有写,我只是想解决这个小问题)..为什么它不会立即隐藏文本呢?为什么它只在某些时候有效?

标签: javascript jquery html css load


【解决方案1】:

创建一个包装 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>

【讨论】:

  • 嗯,有没有办法在不添加任何额外类的情况下做到这一点? hide(); 怎么来的?功能一开始只能工作几次?它不应该一直工作吗?
  • 我编辑了答案。如果您无法修改 HTML(或者只是不想),请将 display:hide 放在 .screens 类中。您看到的不一致行为是因为有时 HTML 在 javascript 有机会运行之前完成加载,有时 javascript 在 HTML 完全加载之前运行。如果你运气不好,js 可能会在.screen 加载之前运行,所以元素永远不会被隐藏。
  • 嗯,好的,谢谢.. 但是哦,伙计,所以即使我这样做 $(document).ready(function() { hide(); });它仍然不能 100% 工作?
  • 会的。 .ready() 在运行回调函数之前确保文档已完全加载。但这意味着您可以保证在隐藏之前看到.screens 元素。如果你想确保元素永远不会出现,你必须用 CSS 隐藏它,因为浏览器会在尝试显示文档之前完全加载 CSS 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多