0

我有两个样式表,一个默认样式和一个圣诞样式。我希望圣诞节样式在 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 回答