隐藏没有CSS的元素

时间:2012-10-29 01:13:26

标签: javascript css css3

如果CSS被禁用,但JavaScript不被禁用,我该如何隐藏元素(在我的情况下是文件输入字段)?以下任何一项都不会起作用,尽管它们在启用CSS时都有效:

element.style.display = 'none';
element.style.visibility = 'hidden';
element.hidden = 'hidden';
element.hidden = true;
element.setAttribute('hidden','hidden');
element.setAttribute('hidden',true);

据我所知,禁用CSS时唯一能隐藏的是隐藏的输入字段。也许这可能会导致一个解决方案。感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

因为它是input元素,您可以将其type更改为隐藏:

element.type = "hidden";

但请注意,这在某些IE版本中不起作用。在这种情况下,我认为你需要创建一个新元素,给它hidden类型,并交换它们。

DEMO: http://jsfiddle.net/gLvRz/

答案 1 :(得分:0)

您只需从DOM中删除元素:

element.parentNode.removeChild(element);

如果您想稍后恢复,可以将其HTML代码(或对元素本身的引用)存储在变量中。如果是表单字段,可能还需要存储其值,然后在恢复元素本身后恢复该值。

此外,请考虑使用hidden HTML5-attribute,但浏览器的支持可能不会太宽(并且属性本身可能会从HTML标准中删除)。

答案 2 :(得分:0)

我想你可以滥用AREA元素隐藏其中的内容。

//hide element
var hiddenContainer = document.createElement("AREA");
element.parentNode.insertBefore(hiddenContainer, element);
hiddenContainer.appendChild(element);

//show element
hiddenContainer.parentNode.insertBefore(element, hiddenContainer);