webForumDet fria alternativet

Lager i NS som anropar scrollingfunktion i JS

6 svar · 231 visningar · startad av Emil RT

Emil RTMedlem sedan feb. 2004200 inlägg
#1

Jag har ett lager med två pilar som ser ut så här:

<div id=scroller style='position:absolute; width:11px; height:40px; z-index:200; left:252px; top:312px; visibility: visible'>
<img src='upp.jpg' width='11' height='14' onMousedown="scrolla('a2', 'up', 2, -65, true);" onMouseup="scrollInte();" onMouseLeave="scrollInte();"><br>
<img src='ned.jpg' width='11' height='14' onMousedown="scrolla('a2', 'nr', 2,350, true);" onMouseup="scrollInte();" onMouseLeave="scrollInte();"></div>

som anropar ett javascript ...

////******* Scrolling funktion ********////

/********* Börja scrolla **********/
/** Anroppas med (Lagrets ID, up/nr, hastighet, hur långt scrollen går, boolean(true)) **/

function scrolla(id, dir, spd, stop, loop) {
loop = true;
direction = "up";
speed = 1;
scrollTimer = null;
stoploop = 0;
layerToScroll=id

if (document.layers) {
var page = eval(document.layers[layerToScroll]);
}
else {
if (document.all) {
var page = eval(document.getElementById(layerToScroll).style);
}
}

direction = dir;
speed = parseInt(spd);
var y_pos = parseInt(page.top);
stoploop = parseInt(stop);
stoploopnu = stoploop-stoploop*2;

if (loop == true) {
if (direction == "nr" && y_pos > stoploopnu) {
page.top = (y_pos - (speed));
}
else {
if (direction == "up" && y_pos < stoploopnu) {
page.top = (y_pos + (speed));
}
else {
if (direction == "top") {
page.top = stoploopnu;
}
}
}
scrollTimer = setTimeout("scrolla(layerToScroll,direction,speed,stoploop)", 1);
}
}

problet är att det funkar bara i IE och inte i NS 7.
Why?

/E

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Två saker reagerar jag direkt på:

  1. Du borde nog använda onmouseout istället för onmouseleave.
  2. Ändra denna rad:
 
if (document.all) {
var page = eval(document.getElementById(layerToScroll).style);
}

till

 
function scrolla(id, dir, spd, stop, loop) {
var page;
direction = "up";
speed = 1;

......

if (document.getElementById) {
page = document.getElementById(layerToScroll).style;
}

document.all finns bara i IE, så netscape skippar den raden. Och vad tusan har du eval till där????
Och dessutom borde du flytta var page till början av funktionen, som jag visar ovan.

Emil RTMedlem sedan feb. 2004200 inlägg
#3

ok, tack. har matat in dina förslag och det fungerar fortfarande bara i IE.

saken är den att det inte ens kommer upp något error i netscape. det händer absolut ingenting när man trycker på scroll-pilarna.

/E

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Ok, pröva att skriva onmouseover och så vidare med små bokstäver. (Alltså inte tex onMouseOver)

Emil RTMedlem sedan feb. 2004200 inlägg
#5

???

funkar inte det heller!

har mina script i en includesökväg.

<script language="JavaScript" src="../aaa_script/main.js"></script>

kan det vara något fel här?

/E

Emil RTMedlem sedan feb. 2004200 inlägg
#6

haha

det var det som var felet.

javaScript ska det vara och inte JavaScript.

/E

nitro2k01Medlem sedan aug. 20039 342 inlägg
#7

Jag vill inte verka som en besserwisser, men det ska inte heller vara "javaScript". language="javascript" ska det vara och inget annat.
Dessutom bör du lägga till type="text/javascript"

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)