Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';不要隐藏一个DIV_Javascript_Css - Fatal编程技术网

Javascript Can';不要隐藏一个DIV

Javascript Can';不要隐藏一个DIV,javascript,css,Javascript,Css,我在这里发疯是因为当我执行以下代码时: myDiv.className += condition ? " green" : " red hidden"; console.log("class: " + myDiv.className); ​var myDiv = document.querySelector("#foo"); myDiv.className = (false) ? "grn" : "red hidden"; 我看到了应该看到的文本。事实上,我甚至看到了我的东西周围的红色边框!

我在这里发疯是因为当我执行以下代码时:

myDiv.className += condition ? " green" : " red hidden";
console.log("class: " + myDiv.className);
​var myDiv = document.querySelector("#foo");
myDiv.className = (false) ? "grn" : "red hidden";
我看到了应该看到的文本。事实上,我甚至看到了我的东西周围的红色边框!但是,出于某种原因(我可以解释),该组件仍然可见。要么是上帝的干预破坏了我的圣诞节,要么是我因为疲劳错过了一些非常基本的东西。是哪一个?上帝现在恨我吗?:)


很可能是其他选择器的特殊性超过了您的
.hidden
类。例如,考虑下面的代码:

myDiv.className += condition ? " green" : " red hidden";
console.log("class: " + myDiv.className);
​var myDiv = document.querySelector("#foo");
myDiv.className = (false) ? "grn" : "red hidden";
在本例中,与您的示例一样,结果是
className
red hidden
,应用了以下两种方法:

.hidden { display: none }
.red { border: 2px solid red }
但我的元素仍然可见:

当我检查这个元素的样式时,很明显问题出在哪里-我有一个更具体的selecto
#foo
,在这种情况下,它推翻了
.hidden
类:


另一种选择是在另一个地方编写类似的脚本,进一步修改该元素的
className
。您可以使用
调试器
关键字插入调试点,然后在页面上逐步执行代码。

可能还有另一个脚本运行并删除名为hidden(相当常见的名称)的类,我猜编写该代码的人是按类而不是按id选择元素的,那个人无意中有一个很大的撤职范围

检查类名的剩余部分。你在最后有个空位。这是一个非常强烈的暗示,有什么东西已经被移除了。(不删除空格的额外减号给编码器)

你应该和那个程序员谈谈,解释如何更安全地执行他的操作


该元素上还有其他样式吗?任何内联样式(
myDiv.style.\uuuuuuuuuuuuuu
)?任何
!重要信息
rules?查看浏览器的开发人员工具,在添加该类后检查元素。您应该能够看到所有匹配css\规则的列表。@MichaelBerkowski我以前在那里看到过,但没有看到任何东西。但是你的回答让我思考,事实上,当我进入DOM编辑器时,隐藏的类不在那里(也不是红色的,所以当边框来自的时候,我会被打败(CSS中的任何地方都没有红色)。当我输入hidden时,DIV的行为就像应该的那样。所以问题是为什么类名没有得到更新(我被红色蒙蔽了,以为它来自那个电话)。@MichaelBerkowski我的坏-红色在那里,事实上。但不是隐藏的。WTF?!那个作业怎么会有这种行为?我已经将类重命名为wroom和“hrmp*以确保不会与其他人发生冲突。但是,同样的行为…你会发布一个JSFIDLE吗?我快疯了。我在那里看到的是:
,右窗格中没有穿透。只有.red类和其中的所有内容。隐藏的是,嗯…它以某种方式隐藏了。:)@AndreasJohansson必须有更多的代码在起作用;当您访问我的在线演示时,您是否得到了正确的结果?另外,您的页面上的其他地方是否有类似的逻辑?是否有可能设置了
.red
.hidden
,但稍后会有其他东西将它们替换为
.red
?@AndreasJohansson尝试在JavaScript代码中输入
debugger;
,然后继续逐步执行。这将显示在代码中删除
隐藏的
的位置(以及确认正在应用它).你说得对。正如我在上面写给@KonradViltersten的信中所说的,这是一个邪恶的JS执行,一个白痴不局限于正确的组件集。那个愚蠢的白痴一周前就是我。如果有超过一两天的时间,你应该为自己编写的代码负责,对吗?非常感谢大家!;)@安德烈亚斯约翰逊听到我能帮忙,非常高兴。圣诞快乐新年前尽量不要失去理智。呵呵,我们走了。。。是的,有一个JavaScript代码可以运行和编辑类步骤的所有组件(虽然没有隐藏,但仍然是相同的想法)。我知道是谁写的代码,但我不会和他说话。我不喜欢自言自语(