动态更改元素'的类名,并让它立即更改页面'的外观
dynamically change an element's class name and have it immediately change the page's appearance
如何动态更改元素的类名并使其立即更改页面外观
在我呈现代码片段之前,问题是 id="shutterWrapper"的部分保持隐藏,而id="noshutterWrapper"的部分保持可见。
<head>
<script type="text/javascript">
<!--
window.onload = function() {
var element;
element = document.getElementById("shutterWrapper");
element.class = "show";
element = document.getElementById("noshutterWrapper");
element.class = "hide";
}
-->
</script>
</head>
<body>
<section id="shutterWrapper" class="hide">
</section>
<section id="noshutterWrapper" class="show">
</section>
在我的。css文件中:
.show {
display: block;
}
.hide {
display: none;
}
您使用的是element.class
,但您想要的是element.className
。试着在你的代码中使用它!
摘自MDN关于className的条目:
className
获取并设置指定元素的class属性的值。
下面是你的代码应该工作的一个例子:
window.onload = function() {
var element;
element = document.getElementById("shutterWrapper");
element.className = "show";
element = document.getElementById("noshutterWrapper");
element.className = "hide";
}
你的javascript有点不对劲。而不是使用element.class
,你需要使用element.className
<script type="text/javascript">
<!--
window.onload = function() {
var element;
element = document.getElementById("shutterWrapper");
element.className = "show";
element = document.getElementById("noshutterWrapper");
element.className = "hide";
}
-->
</script>
应该可以!
https://developer.mozilla.org/en-US/docs/Web/API/Element/className整个"class"属性具有JavaScript属性className(不是class
),在较新的浏览器中,您可以使用更方便的classList属性来操作特定的条目。
在较新的浏览器中:
var setVisible = function(element, isVisible) {
if (isVisible) {
element.classList.remove('hidden');
} else {
element.classList.add('hidden');
}
};
旧版浏览器:
var setVisible = function(element, isVisible) {
var classNameWithoutHidden =
element.className.replace(/hidden's+/, '');
if (isVisible) {
element.className = classNameWithoutHidden + ' hidden';
} else {
element.className = classNameWithoutHiden;
}
};
我发现了一些东西,即:
element.setAttribute("class", "show"); // or, element.className = "show"
现在,感谢你们所有人,问题99%解决了…最后剩余的故障是一个秒闪,如下所述。
在主体中,我假设JS将关闭并在主体中放置显示 id = noshutterWrapper和隐藏 id = shutterWrapper。我有上面的<script>
,有窗口。onload其中我将两者与隐藏id = noshutterwrapper和显示id = shutterWrapper交换。
body被加载,id = noshutterWrapper在一瞬间被显示,随后它被隐藏,id = shutterWrapper被显示,因为JS是启用的。
显示的noshutterWrapper的瞬间闪烁通过:
美元(文档)。Ready (function(){…})
而不是window。Onload = function(){…}
闪烁消失了,我可以把<script>
放到<header>
的位置。
问题100%解决!
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 在页面加载时根据元素的内容更改元素的外观和功能(AngularJS)
- 元素的外观仅在第二次单击时更改
- 动态更改元素'的类名,并让它立即更改页面'的外观