webForumDet fria alternativet

Hjälp med en funktion

4 svar · 165 visningar · startad av UrMe

UrMeMedlem sedan apr. 2001762 inlägg
#1

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!

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Den raden som det ser ut skall fixa detta är bortkommenterad. På raden;

// if(thisLoc.indexOf('?')) thisLoc = thisLoc.split('?')[0]

Skall alltså "//" bort.

UrMeMedlem sedan apr. 2001762 inlägg
#3

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.. :)

JojoxxMedlem sedan juni 20004 308 inlägg
#4

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.

UrMeMedlem sedan apr. 2001762 inlägg
#5

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!

258 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
135 ms — hämta forumlista (db)
119 ms — hämta statistik (db)
127 ms — hämta tråd, inlägg och bilagor (db)