当函数取消隐藏 2 个元素时,如何在 javascript 中显示/隐藏
How to show/hide in javascript when function unhides 2 elements?
我有一个JavaScript可以同时隐藏/取消隐藏HTML中的2个元素。当它只有一个时它工作正常,但现在由于某种原因,某些元素仅在我单击两次时才消失,我不知道错误在哪里,这是代码,以防有人发现错误谢谢。该函数取消隐藏两个给定div id 的元素(xdivID 和divID),并保持父级和祖父级可见(idParent idUncle)
function doubleunhide(xdivID, divID, idParent, idUncle) {
var xitem = document.getElementById(xdivID);
if(xitem){
xitem.className='unhidden';
}
var item = document.getElementById(divID);
if(item) {
item.className='unhidden';
}
var elements = getElementsByClassName(document, "unhidden");
var n = elements.length;
for (var i = 0; i < n; i++) {
var e = elements[i];
if ((e.id != divID) && (e.id != xdivID) && (e.id != idParent) && (e.id != idUncle)){
e.className='hidden';
}
}}
以下是它在 html 中的实现方式:
<div id="prj" class="hidden" style="margin-left:1em">
<a href="javascript:doubleunhide('prj011', 'prj01numbers', 'prj', 'nil');" style="text-decoration:none; color: rgb(0,0,0)" id="prj01link">Project 01</a> <br>
<a href="javascript:doubleunhide('prj021', 'prj02numbers', 'prj', 'nil');" style="text-decoration:none; color: rgb(0,0,0)" id="prj02link">Project 02</a> <br>
<a href="javascript:doubleunhide('prj031', 'prj03numbers', 'prj', 'nil');" style="text-decoration:none; color: rgb(0,0,0)" id="prj03link">Project 03</a> <br>
Project 04<br>
Project 05<br>
</div>
问题是你使用本机node.getElementsByClassName()
结果数组是"实时的" - 它会动态变化,然后你改变页面。在您的情况下 - 然后您在elements
数组更改并变小e.className='hidden';
执行 - 当前元素被清除,因为它没有符合您传入getElementsByClassName()
的搜索条件的日志。但是您的代码仍然认为存在相同的元素并对其进行迭代。您最终尝试获取未定义的节点,出现错误并损坏脚本。要避免这种情况,您可以按相反的顺序迭代:
for (var i = n-1; i >=0 ; i--) {
var e = elements[i];
if ((e.id != divID) && (e.id != xdivID) && (e.id != idParent) && (e.id != idUncle)){
e.className='hidden';
}
相关文章:
- 隐藏javascript滑块的问题
- 是否可以隐藏javascript确认对话框
- 如何在没有按钮的情况下实现显示隐藏JavaScript
- 在较小的屏幕上隐藏 JavaScript
- 他们是如何在这个页面上隐藏JavaScript的
- 切换隐藏javascript函数
- 如何向用户隐藏javascript变量
- 如何在生成的HTML页面中隐藏JavaScript注释
- 在Chrome开发工具中隐藏JavaScript文件
- 重写/隐藏Javascript函数
- 隐藏JavaScript函数中作为参数传递的元素的父元素
- Angular-从Developer窗口隐藏Javascript
- 我可以向用户隐藏Javascript中的一些代码吗?
- 删除/隐藏 javascript 中的选择选项而不会使其看起来很尴尬(需要延迟 select 元素的本机 onclick
- 隐藏JavaScript代码或将其置于根文件夹之外
- QNetworkReply 不会在 HTML 注释中隐藏 JavaScript
- 如何创建指向显示/隐藏javascript隐藏的内容的链接
- 在 DOM 中“隐藏”JavaScript 事件
- 添加动画以显示/隐藏JavaScript函数
- on单击显示/隐藏 想要在隐藏 javascript 上折叠图像大小