3

在这种情况下,我无法将元素状态设置为可见:

<html>
<head>
  <style type="text/css">
    #elem {display:none}
  </style>
</head>
<body>
  <div id="elem">.......</div>
  <script type="text/javascript">
    document.getElementById("elem").style.display="";
  </script>
</body>
</html>

它仅在我将显示设置为“阻止”时才有效。

在这种情况下,它可以工作:

<html>
<head>
</head>
<body>
  <div id="elem" style="display:none">.......</div>
  <script type="text/javascript">
    document.getElementById("elem").style.display="";
  </script>
</body>
</html>

我的兴趣是让它在第一种情况下工作而不设置“块”。

4

4 回答 4

4

为什么要使用内联样式而不是 css 类?

<html>
<head>
  <style type="text/css">
    #elem.hidden {display:none}
  </style>
</head>
<body>
  <div id="elem" class="hidden">.......</div>
  <script type="text/javascript">
    document.getElementById("elem").className = '';
  </script>
</body>
</html>
于 2013-04-04T10:29:36.457 回答
3

.style.display属性设置为""将从元素中删除任何内联样式。然后将应用级联中的先前值。

在这种情况下,开始时没有内联样式,并且"none"已经从级联中接收到值。

您可以将值设置"initial"关键字,但您可能会发现缺少浏览器支持。


您已经抽象出您试图通过修改display属性来解决的任何潜在问题,但很有可能您会做得更好:

#elem.JSOnly {display:none}

和:

<div id="elem" class="JSOnly">

document.getElementById('elem').className = ""

或类似的。

于 2013-04-04T10:29:16.723 回答
-1

试试这个:

document.getElementById("elem").style.display="block";
于 2013-04-04T10:38:09.387 回答
-3

您还可以像这样使用 jQuery。

<script type="text/javascript">
 jQuery('#elem').css('display','');
</script>

您还想添加 jquery 库。

于 2013-04-04T10:46:13.160 回答