【发布时间】:2009-12-23 19:34:25
【问题描述】:
domA.style.display = "none"; domA.style.display = "块;
我在库中找不到这样的函数,但我想他们一定有它。
【问题讨论】:
标签: google-closure google-closure-library
domA.style.display = "none"; domA.style.display = "块;
我在库中找不到这样的函数,但我想他们一定有它。
【问题讨论】:
标签: google-closure google-closure-library
<html>
<head>
<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js" type="text/javascript"></script>
<script language="JavaScript">
goog.require('goog.style');
</script>
</head>
<body>
<div id="myElement">test</div>
</body>
</html>
<script>
goog.style.setStyle(goog.dom.$("myElement"), "display", "none");
// or
goog.style.showElement(goog.dom.$("myElement"), false);
</script>
【讨论】:
另一种选择是
var elA = goog.dom.getElementByClass('sdf');
goog.style.showElement(elA, true) // 显示元素
goog.style.showElement(elA, false) // 隐藏元素
【讨论】:
根据最近的official documentation here,推荐setStyle如下:
设置元素的样式值。 ... 如果可能,请使用本机 API: elem.style.propertyKey = 'value' 或(如果删除旧样式是 很好) elem.style.cssText = 'property1: value1;属性2:值2'。
这将在您的问题中建议goog.dom.getElement('myElement').style.display = 'block';。
还需要注意的是,如果您使用showElement,将第二个参数设置为true 会将元素返回到它的default style。正如它所说:
true 以默认样式呈现元素,false 禁用 渲染元素。
这意味着,如果你在 CSS 中设置 display: none,设置 true 仍然不会显示元素,因为 CSS 默认样式是隐藏元素!这与 jQuery 不同。
要切换,您可以这样做:
var el_style = goog.dom.getElement('myElement').style;
el_style.display = (el_style.display === "none" ? "block" : "none");
【讨论】: