use alternate stylesheet makes it easy (example for two themes is trivial)
<link id="theme" href="themes/theme1.css" rel="stylesheet" type="text/css">
<link id="alttheme" href="themes/theme2.css" rel="alternate stylesheet" type="text/css">
function themeSwitch() {
var t1 = document.getElementById('theme');
var t2 = document.getElementById('alttheme');
t1.disabled = !t1.disabled;
t2.disabled = !t1.disabled;
}
A more generic way, which allows any number of themes
<link class="theme" href="themes/theme1.css" rel="stylesheet" type="text/css">
<link class="theme" href="themes/theme2.css" rel="alternate stylesheet" type="text/css">
<link class="theme" href="themes/theme3.css" rel="alternate stylesheet" type="text/css">
var currentTheme = 0;
var themes = [].slice.call(document.querySelectorAll('link.theme'));
function themeSwitch() {
currentTheme = (currentTheme + 1) % themes.length;
themes.forEach(function(theme, index) {
theme.disabled = (index !== currentTheme);
});
}
And last of all, though you haven't tagged jQuery, you do use jQuery in your code, so, for the sake of the jQuery set:
<link class="theme" href="themes/theme1.css" rel="stylesheet" type="text/css">
<link class="theme" href="themes/theme2.css" rel="alternate stylesheet" type="text/css">
<link class="theme" href="themes/theme3.css" rel="alternate stylesheet" type="text/css">
var currentTheme = 0;
var themes = $('link.theme');
function themeSwitch() {
currentTheme = (currentTheme + 1) % themes.length;
themes.each(function(index, theme) {
theme.disabled = (index !== currentTheme);
});
}