webForumDet fria alternativet

meny bytbild script modifierat

8 svar · 369 visningar · startad av tlee

tleeMedlem sedan mars 2001293 inlägg
#1

Hej,

hittade ett script här på wf som jag behöver ändra lite på.

<html>
<head>
<script language="javascript" type="text/javascript">

function parseQuery(){
 if (location.search) {
  var params = location.search.substring(1, location.search.length).split('&');
  var result = new Array ();
  for (k in params) {
   queryparts=params[k].split('=');
   eval('result.' + queryparts[0] + ' = "' + queryparts[1] + '"');
  }
  return result;
 }
 return new Array();
}

p = parseQuery();
if (p["activeitem"])
  activeitem = p["activeitem"];
else
  activeitem = "btn0";

</script>

<script>

function gotoPage(frameTop, frameMenu, frameMain, frameBottom)
		{
		  if (frameTop) { parent.frames['top'].location = frameTop; }
		  if (frameMenu) { parent.frames['menu'].location = frameMenu; }
		  if (frameMain) { parent.frames['main'].location = frameMain; }
		  if (frameBottom) { parent.frames['bottom'].location = frameBottom; }

		}

imageList=[];

function loadImage(name, imageOn, imageOut, imageAct){
  imageList[name] = []

  imageList[name].imageon = new Image();
  imageList[name].imageon.src = imageOn;

  imageList[name].imageout = new Image();
  imageList[name].imageout.src = imageOut;

  imageList[name].imageact = new Image();
  imageList[name].imageact.src = imageAct;

  cImg = (name == activeitem) ? imageList[name].imageact.src : imageList[name].imageout.src;

  //document.write ('<a href="?activeitem=' + name + '" onmouseover="hoverImage(\'' + name + '\');" onmouseout="hoverImage(\'\')" ><img border="0" name="' + name + '" src="' + cImg + '" /></a>');
  document.write ('<a href=# OnClick="gotoPage('<a href="?activeitem=' + name + '"', '/_shop/menu.asp','/_shop/main.asp','/_shop/cart_view.asp')" onmouseover="hoverImage(\'' + name + '\');" onmouseout="hoverImage(\'\')" ><img border="0" name="' + name + '" src="' + cImg + '" /></a>');
}

function hoverImage(name){
  for (i in imageList)
    if (i!=activeitem)
    if (i==name)
      document.images[i].src = imageList[i].imageon.src;
    else
      document.images[i].src = imageList[i].imageout.src;
}
</script>

<script>
loadImage("btn0","btn1_on.gif", "btn1_off.gif", "btn1_on.gif");
loadImage("btn1","btn2_on.gif", "btn2_off.gif", "btn2_on.gif");
loadImage("btn2","btn3_on.gif", "btn3_off.gif", "btn3_on.gif");

</script>
</head>

<body style="margin-top:4; margin-left:0" background=/images/top.gif>

Jag har lagt in funktionen gotoPage(), raden ovanför anropet är originalraden på hur anropet sker.. jag fattar inte vad som är fel..

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

Hej!

Så här kanske:

function loadImage(name, imageOn, imageOut, imageAct){
  imageList[name] = {};

  imageList[name].imageon = new Image();
  imageList[name].imageon.src = imageOn;

  imageList[name].imageout = new Image();
  imageList[name].imageout.src = imageOut;

  imageList[name].imageact = new Image();
  imageList[name].imageact.src = imageAct;

  cImg = (name == activeitem) ? imageList[name].imageact.src : imageList[name].imageout.src;

  document.write('<a href="#" onclick="gotoPage(\'?activeitem='+ name +'\', \'/_shop/menu.asp\', \'/_shop/main.asp\', \'/_shop/cart_view.asp\')" onmouseover="hoverImage(\''+ name +'\')" onmouseout="hoverImage(\'\')"><img border="0" name="' + name + '" src="' + cImg + '"></a>');
}
tleeMedlem sedan mars 2001293 inlägg
#3

tjena.. kanske kan funka.. jag får dock ett fel på rad 91 och den ser ut såhär

loadImage("btn0
","images_menu/btn1_on.gif", "images_menu/btn1_off.gif", "images_menu/btn1_on.gif");

anropet ligger innanför en script tag.. så det borde funka..
"Ett objekt förväntas" lyder felmeddelandet

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

Följande kod får jag inga felmeddelanden med:

<html>
<head>
<script language="javascript" type="text/javascript">

function parseQuery(){
 if (location.search) {
  var params = location.search.substring(1, location.search.length).split('&');
  var result = new Array ();
  for (k in params) {
   queryparts=params[k].split('=');
   eval('result.' + queryparts[0] + ' = "' + queryparts[1] + '"');
  }
  return result;
 }
 return new Array();
}

p = parseQuery();

if (p["activeitem"])
  activeitem = p["activeitem"];
else
  activeitem = "btn0";

</script>

<script>

function gotoPage(frameTop, frameMenu, frameMain, frameBottom)
		{
		  if (frameTop) { parent.frames['top'].location = frameTop; }
		  if (frameMenu) { parent.frames['menu'].location = frameMenu; }
		  if (frameMain) { parent.frames['main'].location = frameMain; }
		  if (frameBottom) { parent.frames['bottom'].location = frameBottom; }

		}

imageList=[];

function loadImage(name, imageOn, imageOut, imageAct){
  imageList[name] = {};

  imageList[name].imageon = new Image();
  imageList[name].imageon.src = imageOn;

  imageList[name].imageout = new Image();
  imageList[name].imageout.src = imageOut;

  imageList[name].imageact = new Image();
  imageList[name].imageact.src = imageAct;

  cImg = (name == activeitem) ? imageList[name].imageact.src : imageList[name].imageout.src;

  document.write('<a href="gotoPage(\'?activeitem='+ name +'\', \'/_shop/menu.asp\', \'/_shop/main.asp\', \'/_shop/cart_view.asp\')" onmouseover="hoverImage(\''+ name +'\')" onmouseout="hoverImage(\'\')"><img border="0" name="' + name + '" src="' + cImg + '"></a>');
}

function hoverImage(name){
  for (i in imageList)
    if (i!=activeitem)
    if (i==name)
      document.images[i].src = imageList[i].imageon.src;
    else
      document.images[i].src = imageList[i].imageout.src;
}
</script>

<script>
loadImage("btn0","btn1_on.gif", "btn1_off.gif", "btn1_on.gif");
loadImage("btn1","btn2_on.gif", "btn2_off.gif", "btn2_on.gif");
loadImage("btn2","btn3_on.gif", "btn3_off.gif", "btn3_on.gif");

</script>
</head>

<body style="margin-top:4; margin-left:0" background=/images/top.gif>
tleeMedlem sedan mars 2001293 inlägg
#5

nej det fungerar.. var jag som hade missat.. problemet är att länkarna inte fungerar.. trycker jag på knappen så laddar han om sidan i den aktuella framen bara.... testa på
http://www.arlec.com/frame.asp

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

Problemet är att din toppram heter "top". I JavaScript syftar "top" på det fönster högst upp i fönsterhierarkin. Med andra ord är parent.frames["top"] ekvivalent med parent.top, vilket gör att toppramen laddas med menysidan.

Lösningen är alltså att byta namn. :)

tleeMedlem sedan mars 2001293 inlägg
#7

hehe sedär sedär.. jag tackar och bockar! :)

men det funkar fortfarande inte..det är bättre men det verkar som han inte kör funktionen utan postar submitar hela länken eller nått.. istället för att ladda om en frame laddar den allihopa med olika sidor istället..

återigen https://www.arlec.com/frame.asp klicka i menyn för exempel.

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

Jag förstår inte riktigt vad problemet är. Vilken funktion är det som inte körs menar du? gotoPage() är ju definierad så att den laddar nya sidor i samtliga 4 ramar.

Nu visas förresten inte menyn överhuvudtaget, eftersom det fattas ett "\" före apostrofen efter "menu.asp" i document.write()-satsen.

tleeMedlem sedan mars 2001293 inlägg
#9

okej.. jag har fixat det nu .. :) du skall ha stort tack!

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