Den raden som det ser ut skall fixa detta är bortkommenterad. På raden;
// if(thisLoc.indexOf('?')) thisLoc = thisLoc.split('?')[0]
Skall alltså "//" bort.
4 svar · 165 visningar · startad av UrMe
Jag har hittat ett litet javascript som jag använder.. vill dock modifiera scriptet lite.. eftersom jag är ganska dålig på javascript så förstår jag inte allt.
Denna funktion ingår i ett menyscript.. det funktionen gör är att expandera menyn beroende på vilken undersida jag är på.
T.ex om jag är på hejsan.html så kollar funktionen igenom sidan och om den länken finns i menyn så expanderar menyn beroende vart jag är.
Till problemet är att mina undersidor innehåller variabler.. t.ex så heter mina sidor kanske tjoho.php?asd=1 .. och det fungerar så länge som just den länken står i menyn.. men eftersom jag nu använder sessioner på hemsidan så blir det fel eftersom den ändras hela tiden så menyn expanderar inte dit den ska.
Okej.. jag vill alltså att funktionen bara ska kolla efter asd.html och sluta när det blir ett ? i adressen..
humm.. svårt att förklara.. hoppas det klarnar när ni ser koden.
function expandOnLoad()
{
if(document.getElementsByTagName) // check to see if browser supports DOM structure
{
el = document.getElementsByTagName('a')
tgs = new Array()
fTags = new Array()
for(i=0;(el.item(i));i++)
{
if(el.item(i).className.indexOf('cl')>-1) tgs[tgs.length] = el.item(i)
}
for(i in tgs)
{
if(tgs[i].className.indexOf('Links')>-1&&tgs[i].href.indexOf('#')==-1) fTags[fTags.length] = tgs[i]
}
useLevel = useTopLevel ? top : window
thisLoc = useLevel.location.href.toLowerCase()
if(thisLoc.indexOf('#')) thisLoc = thisLoc.split('#')[0]
// if(thisLoc.indexOf('?')) thisLoc = thisLoc.split('?')[0]
for(i in fTags)
{
if(thisLoc == fTags[i].href.toLowerCase())
{
subH = fTags[i].parentNode.id.split('_')
setH = new Array()
for(i in subH) setH[i] = subH[i].charAt(subH[i].length-1)
if(setH.length<=2) foldmenu(setH[0])
else if(setH.length>2)
{
foldmenu(setH[0])
subfoldmenu(setH[0],setH[1])
}
break
}
}
delete el; delete tgs; delete subH; delete setH; delete thisLoc // clear varibles
}
}
Tack på förhand!
Den raden som det ser ut skall fixa detta är bortkommenterad. På raden;
// if(thisLoc.indexOf('?')) thisLoc = thisLoc.split('?')[0]
Skall alltså "//" bort.
Okej.. förstod att det hade nåt med det att göra... den kommenterade jag bort förut så att jag skulle kunna ha asd.php?asd i som länk i menyn.. och det fungerar ju nu..
Men det går inte att liksom kapa adressen som står i menyn? .. nu står det ju som länk t.ex nyheter.php?sida=1 och det måste ju stå kvar för att länken ska bli rätt.. men kan inte funktionen bara läsa nyheter.php..
Det är struligt att förklara.. :)
Prova att byta ut;
if(thisLoc == fTags.href.toLowerCase())**
mot;
if(thisLoc == fTags.href.split('#')[0].split('?')[0].toLowerCase())**
Det borde se till att funktionen bara jämför filnamn utan querystring/ankare.
Ok.. ska prova det.. men det är löst på annat sätt nu iallafall.. problemet var ju att sessionerna las i adressfältet.. men fick hjälp med det i php-forumet.
Tack så mycket!