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 に答える
-3

このようにjQueryも使用します。

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

jquery ライブラリも追加します。

于 2013-04-04T10:46:13.160 に答える