1

簡単な展開/非表示テストスクリプトを作成しました。

<html>
<head>
<script type="type/javascript"><!--
function showHide(elementid){
    if (document.getElementById(elementid).style.display == 'none'){
        document.getElementById(elementid).style.display = '';
    } else {
        document.getElementById(elementid).style.display = 'none';
    }
}
//-->
</script>
</head>
<body>

<div><a href="javascript:showHide('div_1035677');">more...</a></div>

<div id="div_1035677" style="display:none">
HIDDEN CONTENT
</div>
</body>
</html>

意味をなさないエラーメッセージが表示されます(1行目にオブジェクトが必要です)。上記のコードにエラーはありません。:-(

4

5 に答える 5

11

type="type/javascript"である必要がありますtype="text/javascript"

于 2011-01-01T16:06:07.857 に答える
5

type/javascriptに変更text/javascript

完全な例:

<html>
<head>
  <script type="text/javascript" charset="utf-8">
  function showHide(elementid){
    if (document.getElementById(elementid).style.display == 'none'){
      document.getElementById(elementid).style.display = '';
    } else {
      document.getElementById(elementid).style.display = 'none';
    }
  }
  </script>
</head>
<body>
  <div><a href="javascript:showHide('div_1035677');">more...</a></div>
  <div id="div_1035677" style="display:none">
    HIDDEN CONTENT
  </div>
</body>
</html>
于 2011-01-01T16:06:43.047 に答える
2

script タグの MIME タイプが間違ってtext/javascripttype/javascriptます。

ブラウザーは、不明な MIME タイプのスクリプト コンテンツを無視します。

実際には、このtype属性は必須ではありません。ただし、追加する場合はtext/javascript、3 つの主要なブラウザーすべてで認識される唯一の値であるため、これを追加する必要があります。標準として、javascript の正しい MIME タイプはありますがapplication/javascript、IE では認識されません。

<script type="text/javascript">
    function showHide(elementid){
        if (document.getElementById(elementid).style.display == 'none'){
            document.getElementById(elementid).style.display = '';
        } else {
            document.getElementById(elementid).style.display = 'none';
        }
    }
</script>

さらに読むため
に SCRIPT タグに type="text/javascript" を含めるべきですか?

于 2011-01-01T16:10:55.783 に答える
1

はい、他の人が上で言ったように、type/javascriptではなくtext/javascriptを使用する必要があります。さらに、CDATAブロックを使用すると、HTML / XMLバリデーター(W3C HTMLバリデーターなど)がJavaScriptを不正としてマークするのを防ぐことができます。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <script type="text/javascript">
        //<![CDATA[
        function showHide(elementid){
            if (document.getElementById(elementid).style.display == 'none'){
                document.getElementById(elementid).style.display = '';
            } else {
                document.getElementById(elementid).style.display = 'none';
            }
        }
        //]]>
        </script>
    </head>

    <body>
        <div><a href="javascript:showHide('div_1035677');">more...</a></div>
        <div id="div_1035677" style="display:none;">
        HIDDEN CONTENT
        </div>
    </body>
</html>
于 2011-01-01T17:50:36.060 に答える
0

タイプをに設定してtext/javascriptも機能しない場合は、要素がDOMにロードされていないことが原因である可能性があります。この問題を解決するには、次の2つの方法があります。

  1. 次のように、Javascriptコードをdivの下に移動します。

    <div id="div_1035677" style="display:none">
      HIDDEN CONTENT
    </div>
    <script type="text/javascript">
    

  2. onloadイベントハンドラーでコードをラップします。

    関数showHide(){
      if(this.style.display =='none'){
        this.style.display ='';
      } そうしないと {
        this.style.display='なし';
      }
    }
    
    
    window.onload = function(){
      document.getElementById('link')。onclick = showHide;
    };
    
于 2011-01-01T16:07:28.810 に答える