Tipo questa... non si può considerare propriamente una semplificazione, giusto?
Codice PHP:
function addlink(){
// Crea un elemento LINK, e prende l'elemento Ancor su cui applicare gli eventi
var link, a;
a = document.getElementById("jsmenu").getElementsByTagName("a")[0];
link=document.createElement("link");
link.setAttribute("type","text/css");
link.setAttribute("rel","stylesheet");
link.setAttribute("media","all");
document.getElementsByTagName("head")[0].appendChild(link);
change(link,a);
}
function change(link,a){
// Individua quale deve essere l'azione dell'ancora in base alla classe
// e richiama la funzione opportuna
var cssfile, starthref, i;
// Salva l'attributo HREF prima di rimpiazzarlo con #
// sarà da ripassare a questa funzione ogni volta, per ricavare il nome del file CSS
starthref = a.href;
a.href="#";
// Verifica se la classe dell'ancora è "modif" (il file CSS è stato caricato) o "init"
if(/modif/.test(a.className)){
a.onclick = function(){ removeCss(link,a,starthref) };
} else {
// Ricava il nome del file CSS dal href dell'ancora
cssfile = starthref.substring(starthref.indexOf("=")+1, starthref.length);
a.onclick = function(){ addCss(link,cssfile,a,starthref) };
}
}
function removeCss(link,a,starthref){
// Rimuove l'attributo href in LINK, cambia la classe ed il testo del link e ritorna
// alla funzione change()
link.removeAttribute("href");
a.className = "init";
a.href = starthref;
a.replaceChild(document.createTextNode('Impaginazione per piccoli schermi'), a.firstChild);
change(link,a);
}
function addCss(link,cssfile,a,starthref){
// Setta l'attributo href in LINK, cambia la classe ed il testo del link e ritorna
// alla funzione change()
link.setAttribute("href",cssfile);
a.className = "modif";
a.href = starthref;
a.replaceChild(document.createTextNode('Impaginazione a due colonne'), a.firstChild);
change(link,a);
}
window.onload=addlink;