通过脚本在<head>中隐藏元素,然后使用函数显示
Hiding an element via a script in the <head>, then showing with a function?
我隐藏了一个元素,稍后当用户按下按钮时显示。
我把它放在.html的头标签中:
<script>document.getElementById("answerswerPanel").style.display = "none";</script>
然后,当在.js中调用函数时:
document.getElementById("answerswerPanel").style.display = "";
此方法是否会导致页面加载时元素短暂闪烁?有没有更好的方法可以做到这一点,它(几乎)一样简单?
请注意,在我牢牢掌握了普通 JavaScript 之前,我试图避免使用 jQuery。
如果你想确保元素在开始时根本不出现,你应该通过HTML而不是JavaScript来设置元素的样式。这使得即使对其他资源(如 JavaScript 文件或 CSS 文件)的请求延迟,元素也会被隐藏。
内联 JavaScript 可能是一种解决方案,在这种情况下,您不会遇到问题,但如果您尝试将它用于一些更复杂的情况,您可能会冒布局垃圾的风险,从而延迟您的初始页面加载。我不会推荐它。
.HTML:
<div id="test" style="display:none"> </div>
<button onclick='show()'>Show!</button>
CSS(可选):
#test {
width:100px;
height:100px;
background-color:red;
}
.JS:
function show() {
document.getElementById('test').style.display = '';
}
演示:http://jsbin.com/oYiDEJU/2/edit
编辑:此解决方案(内联样式)允许您轻松地从CSS更改显示值:
#test {
display:inline;
}
隐藏并显示它将保留'inline'
值,而不是用 'block'
覆盖它。您可以在链接的 JsBin 中看到我正在谈论的问题。
最初使用 css 隐藏它:
#answerPanel { display: none; }
然后用JS按需显示:
document.getElementById('answerPanel').style.display = 'block';
如果你想避免"闪光",最好的是浏览器加载已经隐藏的元素:
<div id="answerswerPanel" style="display: none">
</div>
相关文章:
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- 将元素移动到右侧,然后返回到左侧
- 添加animate.css类,然后使用remove移除元素
- Angular js,在选择元素上,我想 POST 数据以将其保存在数据库中,然后我想使用 PUT 更新它而无需重新加载
- 在元素中搜索字符串,然后将其放入条件语句中
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- JQuery 测试元素是可见的还是隐藏的,然后添加删除类
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- jQuery检查URL,然后显示和隐藏元素
- Javascript(动态)插入到数组中,然后移动+1下面的所有元素
- jQuery-等待此元素,然后执行1次
- 如何正确地等待元素获得正确的宽度,然后在Angular 2中访问它
- ()插入元素,然后将其取回
- 从数组中删除元素,然后保留其状态以备将来使用,而不使用全局变量
- jQuery查找元素,然后组成逗号分隔的列表
- 使用Raphael.js可以相对定位一个元素,然后将其偏移一个绝对单位
- 我如何让我的网站检测鼠标是否被使用,然后在元素中添加一个类
- 等待文档鼠标按下完成,然后元素单击才能开始
- Javascript循环形式的值先名称,然后元素id