Попробуй загружать все link, а потом менять.
Смотри, есть стили:
<link rel="stylesheet" data-default-style type="text/css" href="css/style1.css" title="Style1">
<link rel="alternate stylesheet" type="text/css" href="css/style2.css" title="Style2">
<link rel="alternate stylesheet" type="text/css" href="css/style3.css" title="Style3">
<link rel="alternate stylesheet" type="text/css" href="css/style4.css" title="Style4">
<link rel="alternate stylesheet" type="text/css" href="css/style5.css" title="Style5">
<link rel="alternate stylesheet" type="text/css" href="css/style6.css" title="Style6">
<link rel="alternate stylesheet" type="text/css" href="css/style7.css" title="Style7">
<link rel="alternate stylesheet" type="text/css" href="css/style8.css" title="Style7">
.
По умолчанию будет запускаться тот, у которого в rel нет "alternate", насколько я помню.
Потом скриптами меняешь:
var userStyle = function(styleTitle) {
var links = document.head.querySelectorAll('link[rel~="stylesheet"][title]');
var found = false;
for(var i=0; i<links.length; i++) {
links[i].disabled = true;
if(styleTitle == links[i].getAttribute('title')) { /* слышал, что IE глючит с title у link. Поэтому getAttribute */
links[i].disabled = false;
found = true;
}
}
if(!found) { /* не найдено → устанавливаем тот, что по умолчанию */
document.head.querySelector('[data-style-default]').disabled = false;
}
};
У меня немного по-другому, ибо ООП, но должно работать.