-1

如果 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 被禁用时唯一可以隐藏的是隐藏的输入字段。也许这可能会导致解决方案。任何帮助表示赞赏,谢谢!

4

3 回答 3

1

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

element.type = "hidden";

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

演示:http: //jsfiddle.net/gLvRz/

于 2012-10-29T01:18:00.830 回答
0

我想你可以滥用这个AREA元素来隐藏它里面的东西。

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

//show element
hiddenContainer.parentNode.insertBefore(element, hiddenContainer);
于 2012-10-29T03:14:35.677 回答
0

您可以从 DOM 中删除元素:

element.parentNode.removeChild(element);

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

此外,考虑使用hiddenHTML5-attribute,尽管浏览器对它的支持可能还不是太广泛(并且属性本身可能从 HTML 标准中删除)。

于 2012-10-29T01:17:04.390 回答