javascript 更改 div 以显示 :none - prevent displaying divs before javascript runs?

标签 javascript css html pageload

我有一个函数 shoh() 可以切换 div 的状态 - 显示或隐藏它。加载页面时,通过将样式更改为 display:none,重复调用 shoh($id) 以隐藏页面上的每个 div。如果用户想要查看隐藏的 div 中的数据,他们单击带有 onClick="show($id)"的链接以将 div 样式更改为 display:block。这一切都很好。

即使禁用了 javascript,我也希望该页面能够正常工作,因此我必须将 div 默认设置为可见,否则没有 javascript 的用户将永远无法看到数据。问题是当页面加载时,所有 div 都显示为可见,并且页面需要在隐藏 div 之前完全加载。这在美学上很差,并且会造成视觉困惑,因为页面可能需要几秒钟才能加载。

有什么方法可以防止屏幕在 javascript 有机会运行之前显示 div?我不介意显示“正在加载...”之类的东西。提前致谢。

//toggle state of div - show OR hide - default is hidden
function shoh(id, cmd) { 
// if cmd is not blank, clicked on button to expand all or collapse all
cmd = typeof cmd !== 'undefined' ? cmd : '';
if (document.getElementById(id)){
    if ((document.getElementById(id).style.display == "none" || cmd=='show') && cmd!=='hide'){
        //show
        document.getElementById(id).style.display = 'block';
        filter(("img"+id),'imgin');
        setCookie(window.location.pathname + ":" + id, "show", 365)
    } else {
        //hide
        document.getElementById(id).style.display = 'none';         
        filter(("img"+id),'imgout');
        deleteCookie(window.location.pathname + ":" +id);
    }   
}   
}

最佳答案

使用 document.write 将整个内容包装在一个未显示的 div 中,然后在 JavaScript 中显示它。如果客户端没有 JS,则不会呈现 document.write,也不需要显示它的最终调用。

将此脚本放在行内,而不是放在标题中..

<script type='text/javascript'>
    document.write("<div id='hideWhileRendering' style='diplay: none;'>");
</script>

... then rest of your divs ...

<script type='text/javascript'>
    document.write("</div>");
</script>

然后使用 onload 函数将显示更改为 show。如果没有运行 JS,那么所有这些都将被忽略。如果 JS 运行,那么在 onload 完成之前它都是不可见的。

关于javascript 更改 div 以显示 :none - prevent displaying divs before javascript runs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18431761/

相关文章:

javascript - jQuery getJSON 回调的顺序?

javascript - 在 jquery 循环中为选项设置文本时出错

javascript - jQuery 单击除 div 之外的任意位置

javascript - 使用下划线 groupby 按颜色对一系列汽车进行分组

jquery - 如何垂直交错这些 HTML 元素?

css - Outlook 上的灵活图像

html - 剪辑路径占用整个图像的空间?

php - 使用 PHP Html5 流式传输视频

javascript - jQuery UI 可调整大小的两个对象

Javascript - 使用 Javascript 更改 img 标签 src 有时不会反射(reflect)