När man klickat på en rubrik i listan så visas en text till höger, precis som jag vill, men om man klickar en andra gång vill jag att texten till höger försvinner bort igen. Tror inte att det borde vara så mycket jobb.
Sen har jag ett litet problem till. Det verkar inte fungera alls i IE, det vore bra om det gjorde det. :)
Du kör med addEventListener för att sätta ett event på elementen, attachEvent heter det för IE, om jag kan komma med förslag så hade jag försökt mig på JQuery istället (eller annat ramverk) det hade blivit så mycket enklare ;)
Men din js kod kan vara:
var sectionCollapse = function(){
// start configuration - edit here
var config = {
JSavailableClass:'js',
showClass:'show',
tocID:'toc'
}
// end configuration
document.body.className = (document.body.className +' '||'') + config.JSavailableClass;
var toc = document.getElementById(config.tocID);
if(toc){
var current = {};
function toggle(e){
var t = e.target;
if(t.nodeName.toLowerCase() === 'a'){
var sectionID = t.getAttribute('href').split('#')[1];
var section = document.getElementById(sectionID);
if(current.section){
current.section.className = '';
}
if(section){
section.parentNode.className = (current.section==section.parentNode?'':config.showClass);
current.section = section.parentNode;
};
};
};
toc.addEventListener('click',toggle,false);
};
}();
Nu har jag kollat lite på jQuery och insett att jag kan alldeles för lite Javascript. Har hittat ett exempel på hur man kan göra visa/dölj. Men grejen är att jag gärna vill ha kvar HTML som den är nu. Alltså den HTML som är på testsidan.
Måste säga det bli fruktansvärt jobbigt eftersom det är jätte svårt att få ut divarna att döljas, hade varit betydligt enklare om det hade varit en wrapper runt dom, men: