0

私は2つのスタイルシートを持っています。1つはデフォルトスタイルで、もう1つはクリスマススタイルです。クリスマススタイルを12月にロードし、デフォルトを隔月で使用したいと思います。

私は私が望むものを達成する以下のコードを書きました、しかし私がそれをバリデーターに入れると、私はエラーを受け取ります:「ドキュメントタイプはここに要素「リンク」を許可しません」。このコードを検証するにはどうすればよいのでしょうか。

<head>
    <script type="text/javascript">
        var i = new Date();
        var m = i.getMonth();
        if (m==11) {
            document.write('<link rel="stylesheet" type="text/css" href="mystyle-christmas.css" />');
        } else {
            document.write('<link rel="stylesheet" type="text/css" href="mystyle-default.css" />');
        }
    </script>
</head>
4

2 に答える 2

3

CDATA を使用していないためバリデーターに問題があり、バリデーターは JavaScript を解析します。以下を使用して問題を解決してください。

<head>
    <script>
    //<![CDATA[
        // Your code here
    // ]]>
    </script>
</head>

ところで、以下はそれを行うためのより良い方法です:

<head>
    <script type="text/javascript">
        var i = new Date(),
            m = i.getMonth(),
            l = document.createElement( 'link' )

        l.rel = 'stylesheet'

        if ( m === 11 ) {
            l.href = 'mystyle-christmas.css'
        }
        else {
            l.href = 'mystyle-default.css'
        }

        document.getElementsByTagName( 'HEAD' )[ 0 ].appendChild( l )
    </script>
</head>

さらに良い方法は、JavaScript を外部の js ファイルに入れることです。

于 2012-04-30T17:00:23.130 に答える
0

を使用する代わりに要素を作成してみてくださいdocument.write:

  var christmas = document.createElement("link");
  christmas.setAttribute("rel", "stylesheet");
  christmas.setAttribute("type", "text/css");
  christmas.setAttribute("href", "mystyle-christmas.css");

  document.getElementsByTagName("head")[0].appendChild(christmas)
于 2012-04-30T17:00:31.320 に答える