webForumDet fria alternativet

Menyscript med 2 olika target

11 svar · 336 visningar · startad av Mira

MiraMedlem sedan maj 2001954 inlägg
#1

Jag har ett javasacript (färdigt script) som gör en dropdownmeny.
I koden skriver man vilken target länkarna ska ha.
Nu skulle jag vilja kunna välja 2 olika target-möjligheter.
Hur får jag in det i koden?

Det här är koden som skriver ut länken:

skrivUtDetta+=
("<TR><TD HEIGHT='"+varjeLanksHojd+"' "+styleForTDelement+" onClick=
\""+geTargetKod('javascript', eval("meny"+i+"lankar["+j+"]"))
+"\" onMouseOver=\"this.style.backgroundColor='"+menyerFargMedMus+"'\" 
onMouseOut=\"this.style.backgroundColor=''\">
<A HREF=\""+eval("meny"+i+"lankar["+j+"]")+"\" TARGET=\""+geTargetKod('lank')+"\" 
CLASS='menyLankClass'><IMG SRC='"+bildSida+"' BORDER=0 HEIGHT="+bildSidaHojd+" 
WIDTH="+bildSidaBredd+" VSPACE=0 HSPACE=0>
"+eval("meny"+i+"rubriker["+j+"]")+"</A></TD></TR>")

Säg till om det behövs mer kod för att förstå.

Peter SMedlem sedan dec. 20025 484 inlägg
#2

Menar du att nedanstående skall ändras så att href-värdet öppnas på två olika ställen?

TARGET=\""+geTargetKod('lank')+"\"
MiraMedlem sedan maj 2001954 inlägg
#3

Inte samma href, utan olika för de 7 olika länkarna jag har.
Några ska öppnas på _blank, några i en frame.
Alltså behöver jag kunna ange hur varje länk ska öppnas - i target1 eller target2.

Target anges såhär: menyTarget="_blank";

Och länkarna såhär:
meny1lankar=new Array(
"xxx1.htm",
"xxx2.htm",
"xxx3.htm",
"xxx4.htm");

Peter SMedlem sedan dec. 20025 484 inlägg
#4

Om vi kopplar meny1lankar[x] med menytarget[x], like so:

meny1lankar = new Array("xxx1.htm", "xxx2.htm", "xxx3.htm");

menytarget = new Array("frame1", "_blank", "frame2");

xxx1.htm öppnas alltså i frame1, xxx2.htm i ett nytt fönster o.s.v. Och sedan:

skrivUtDetta+=
("<TR><TD HEIGHT='"+varjeLanksHojd+"' "+styleForTDelement+" onClick=
\""+geTargetKod('javascript', eval("meny"+i+"lankar["+j+"]"))
+"\" onMouseOver=\"this.style.backgroundColor='"+menyerFargMedMus+"'\" 
onMouseOut=\"this.style.backgroundColor=''\">
<A HREF=\""+eval("meny"+i+"lankar["+j+"]")+"\" TARGET=\""+[b]menytarget[j][/b]+"\" 
CLASS='menyLankClass'><IMG SRC='"+bildSida+"' BORDER=0 HEIGHT="+bildSidaHojd+" 
WIDTH="+bildSidaBredd+" VSPACE=0 HSPACE=0>
"+eval("meny"+i+"rubriker["+j+"]")+"</A></TD></TR>")

Ute och cyklar?

MiraMedlem sedan maj 2001954 inlägg
#5

Nä, det blir något fel.
Felmeddelandet säger att "_blank är odefinierad" och så pekar den på det ställe där geTargetKod är angivet.
Testade även att låta geTargetKod vara kvar, med samma felresultat.

geTargetKod är angiven så här:

function geTargetKod(typ, URL)
{
	if (typ == "lank")
	{
		if (menyTarget == "_blank")
		{
		return "theNewWindow"
		}
		else
		{
		return menyTarget;
		}
	}
	else
	{
		if (menyTarget == "_top")
		{
		return "top.location.href='"+URL+"'"
		}
		else if (menyTarget == "_self")
		{
		return "self.location.href='"+URL+"'"
		}
		else if (menyTarget == "_blank")
		{
		return "oppnaFonster('"+URL+"');"
		}
		else if ((typeof(eval("parent."+menyTarget))+"").toLowerCase().indexOf("object") != -1)	
		{		return "parent."+menyTarget+".location.href='"+URL+"'"
		}
		else if (varningFrameSaknas.length>0)
		{
		alert(varningFrameSaknas)
		varningFrameSaknas="";	
		}
	}
}
Peter SMedlem sedan dec. 20025 484 inlägg
#6

Kan du inte bara ange som argument till geTargetKod() var du vill att länken skall öppnas? Alltså:

TARGET=\""+geTargetKod('_blank')+"\"

Och sedan bygga om geTargetKod() litet grand.

MiraMedlem sedan maj 2001954 inlägg
#7

Men då öppnas ju alla länkar i -blank.
Eller...?
Vad menar du med bygga om?
Funktionen geTargetKod anger väl bara hur target-koden ska tolkas av scriptet...?
_blank är ju definierat, men något i ditt förslag gör att den inte fattar det...

Peter SMedlem sedan dec. 20025 484 inlägg
#8

Så här menar jag (enkelt):

TARGET=\""+geTargetKod('_blank')+"\"
TARGET=\""+geTargetKod('frame1')+"\"
TARGET=\""+geTargetKod('_self')+"\"
function geTargetKod(w){
    return w;
}
MiraMedlem sedan maj 2001954 inlägg
#9

Fattar inte riktigt var jag ska skriva detta - och vad jag ska ta bort...

Peter SMedlem sedan dec. 20025 484 inlägg
#10

Det är förmodligen jag som missuppfattar vad du vill åstadkomma. Om vi startar om från början; varför kan du inte bara skriva exempelvis så här direkt i koden:

TARGET=\"frame1"

TARGET=\"_blank\"

o.s.v?

Peter SMedlem sedan dec. 20025 484 inlägg
#11

Ok, jag tror jag förstår vad du menar. Om vi går tillbaka till det här inlägget, så kan anledningen till felet bero på radbrytningarna. Se till att allt hamnar på samma rad som skrivUtDetta.

MiraMedlem sedan maj 2001954 inlägg
#12

Radbrytningarna finns bara här, inte i min kod.

Grejen är att skrivUtDetta finns bara i koden 1 gång - alltså kan jag inte skriva flera TARGET där.
Det måste isf anges i new Array - där länkarna är angivna.
Därför trodde jag att ditt första förslag skulle funka, men det är nåt som felas... (obs jag har stavat det menyTarget som det ska vara - så inget fel där heller)
Fast jag tror mer på att geTargetKod ska vara kvar, eftersom menyTarget kopplas in där.
Men, men, det löser inget det heller...

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb