2012-04-30 2 views
0

У меня есть две таблицы стилей, один стиль по умолчанию и один стиль Рождества. Я хотел бы, чтобы рождественский стиль был загружен в декабре, а дефолт использовался в каждом другом месяце.Подтвердить загрузку CSS с помощью JavaScript

Я написал код ниже, который достигает того, что я хочу, однако, если я помещу его в валидатор, я получаю сообщение об ошибке: «Тип документа не позволяет элементу» ссылку «здесь». Мне было интересно, как я могу проверить этот код?

<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> 
+1

вы хотите сделать это только с JavaScript? Я имею в виду, что вы могли бы сделать это с помощью любого кода, такого как C# vb.net или Php –

ответ

3

Валидатор имеет проблемы, потому что вы не используете CDATA, таким образом, валидатор будет разбирать ваш JavaScript. Используйте следующее, чтобы решить вашу проблему:

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

Btw, следующий лучший способ сделать это:

<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 файл.

+0

. Я согласен, что иметь внешний файл js будет лучше, и это то, что я пытался сделать, когда у меня был код, работающий локально, но не мог заставить его работать по какой-то причине. Любые предложения относительно того, как я могу использовать свой код во внешнем файле? –

+0

Поместите его в файл js и не добавьте теги сценария в файл js. –

+0

Я поместил свой существующий код в файл js как есть, но я не мог заставить его быть вызванным в html .. извините, я знаю, что я тупой, я раньше не использовал JavaScript! –

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) 
Смежные вопросы