monAmourMedlem sedan dec. 2002270 inlägg
Jag kan inte få den här enkla scroll funktionen att fungera tillsammans med min init() funktion.
Hade en enklare init förut utan getElementById och då fungerade den, har byggt om den nu för jag ska skapa ett mer avancerat skript.
Det underliga är att scroll funktionen idagsläget bygger på scrl.ypos.. och den är satt och inte "undefined". det har jag sett med hjälp av alert funktionen jag lagt in för att se värdena just nu.
Här är min kod snutt:
<script language="javascript" type="text/javascript">
<!--
var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
var domBrw = (document.getElementById) ? true:false
function init() {
if (domBrw) {
scrl = document.getElementById("insideIframe");
scrl.offH = scrl.offsetHeight;
scrl.clipH = scrl.offsetHeight;
scrl.ypos = parseInt(scrl.style.top);
}
else if (ie4) {
scrl = document.all.insideIframe;
scrl.offH = scrl.offsetHeight;
scrl.clipH = scrl.offsetHeight;
scrl.ypos = parseInt(scrl.style.top);
}
else if (ns4) {
scrl = document.layers.styrLager.document.layers.upperTextFrameBody.document.layers.iFrameLayer.document.layers.insideIframe;
scrl.offH = scrl.document.height;
scrl.clipH = scrl.clip.height;
scrl.ypos = parseInt(scrl.top);
}
scrl.active = false;
alert("OffsetHeight is: "+scrl.offH+"\nand ClipHeight is: "+scrl.clipH+"\nand Ypos is: "+scrl.ypos);
}
function scrollUp() {
if (scrl.active) {
scrl.ypos -= 5
scrl.top = scrl.ypos
setTimeout("scrollUp()",30)
}
}
function scrollDown() {
if (scrl.active) {
scrl.ypos += 5
scrl.top = scrl.ypos
setTimeout("scrollDown()",30)
}
}
//-->
</script>
<body onload="init()">
Varför fungerar det inte, jag använder IE6 just nu.
JojoxxMedlem sedan juni 20004 306 inlägg
Du kan inte bara hitta på en egen DOM och ge objekten roliga egenskaper :) I w3-DOM använder du i ditt fall scrl.style.top och inte scrl.top exempelvis.
Ta en titt på layerlib.js så hittar du lite cross-browser funktioner för att flytta/läsa av lagerpositioner.
monAmourMedlem sedan dec. 2002270 inlägg
Har kikat i din layerlib nu och har ett script som ser ut så här..
Dock verkar det inte som att själva timeout funktionen fungerar.. vill ju att mitt lager ska scrollas. dock flyttas det bara 1 steg i taget ändå..
Why?
Min kod:
var active=0;
function moveIt(id,y) {
if (document.all || document.getElementById || document.layers) {
if (document.all) {
document.all[id].style.top = y;
} else if (document.getElementById) {
document.getElementById(id).style.top = y;
} else if (document.layers) {
document.layers[id].top = y;
}
}
}
function moveUp(id) {
if (document.all || document.getElementById || document.layers) {
if (document.all) {
var currentY = parseInt(document.all[id].style.top);
} else if (document.getElementById) {
var currentY = parseInt(document.getElementById(id).style.top);
} else if (document.layers) {
var currentY = parseInt(document.layers[id].top);
}
currentY-=5;
moveIt(id,currentY);
}
}
function moveDown(id) {
if (document.all || document.getElementById || document.layers) {
if (document.all) {
var currentY = parseInt(document.all[id].style.top);
} else if (document.getElementById) {
var currentY = parseInt(document.getElementById(id).style.top);
} else if (document.layers) {
var currentY = parseInt(document.layers[id].top);
}
currentY+=5;
moveIt(id,currentY);
}
}
function scrollUp(id,speed) {
if (active==1) {
if (document.all || document.getElementByid || document.layers) {
moveUp(id);
setTimeout("scrollBy("+id+")",speed);
}
}
}
function scrollDown(id,speed) {
if (active==1) {
if (document.all || document.getElementByid || document.layers) {
moveDown(id);
setTimeout("scrollBy("+id+")",speed);
}
}
}
// Triggar med följande:
<a href="#" onMouseDown="active=1; scrollDown('insideIframe',30);" onMouseOut="active=0" onMouseUp="active=0"><img src="bilder/scroll_up.gif" border="0" alt="Skrolla upp"></a><br>
<img src="bilder/scroll_bar.gif" border="0"><br>
<a href="#" onMouseDown="active=1; scrollUp('insideIframe',30);" onMouseOut="active=0" onMouseUp="active=0"><img src="bilder/scroll_down.gif" border="0" alt="Skrolla ned"></a>
Tack på förhand!
Peter SMedlem sedan dec. 20025 484 inlägg
Kan du visa koden för lagret också?
:)
monAmourMedlem sedan dec. 2002270 inlägg
Så klart:
Så här ser den ut:
<div id="iFrameLayer" style="position:absolute; left:-10px; top:-21px; z-index:99; width:454px; height:482px; clip:rect(0,454,482,0); visibility:visible;">
<div id="insideIframe" style="position:absolute; left:25px; top:0px; z-index:1">
<?
include($pageIFrame);
?>
</div>
</div>
Nu så.. som ni ser hämtas dynamisk data från en PHP fil med hjälp av php kommandot include.. men det ska väl inte spela någon roll för javascriptet..
php sidan som inkluderas innehåller inget konstig heller.. inga nya <head> eller <html> tagger o så.
Peter SMedlem sedan dec. 20025 484 inlägg
Ursäkta dröjsmålet:
<script type="text/javascript">
<!--
var active=0, temp = null;
function moveIt(id,y) {
if (document.all || document.getElementById || document.layers) {
if (document.all) {
document.all[id].style.top = y;
} else if (document.getElementById) {
document.getElementById(id).style.top = y;
} else if (document.layers) {
document.layers[id].top = y;
}
}
}
function moveUp(id) {
if (document.all || document.getElementById || document.layers) {
if (document.all) {
var currentY = parseInt(document.all[id].style.top);
} else if (document.getElementById) {
var currentY = parseInt(document.getElementById(id).style.top);
} else if (document.layers) {
var currentY = parseInt(document.layers[id].top);
}
currentY-=5;
moveIt(id,currentY);
}
}
function moveDown(id) {
if (document.all || document.getElementById || document.layers) {
if (document.all) {
var currentY = parseInt(document.all[id].style.top);
} else if (document.getElementById) {
var currentY = parseInt(document.getElementById(id).style.top);
} else if (document.layers) {
var currentY = parseInt(document.layers[id].top);
}
currentY+=5;
moveIt(id,currentY);
}
}
function scrollUp(id,speed) {
temp = id;
if (active==1) {
if (document.all || document.getElementByid || document.layers) {
moveUp(id);
setTimeout("scrollUp(temp,"+speed+")",speed);
}
}
}
function scrollDown(id,speed) {
temp = id;
if (active==1) {
if (document.all || document.getElementByid || document.layers) {
moveDown(id);
setTimeout("scrollDown(temp,"+speed+")",speed);
}
}
}
//-->
</script>
:)
monAmourMedlem sedan dec. 2002270 inlägg
Ingen fara med dröjesmål.. glad att någon vill hjälpa..
Det funkar utmärkt.. Tackar och bockar!