Avatar billede Slettet bruger
13. september 2006 - 09:45 Der er 1 kommentar og
1 løsning

Genkald funktion

Hej eksperter,

Jeg har et script der kan benyttes som scrollbar.
Det virker ganske udemærket, men problemet er at det er bygget til en scrollbar. Jeg skal nu bruge to scroll.

Da javascript ikke er min stærke side, søger jeg en der kan omskrive scriptet således det kan kaldes og bruges på flere divs.

Som jeg ser det, og har forsøgt - er det vel egentlig bare de tre steder der henvises til divs, og så selve højden på boksen med indholdet. Men det er ikke lykkes mig at ændre det.

Da jeg ikke ved hvor omfattende opgaven er, sætter jeg 100 points af. Er opgaven krævende, hæver vi selvfølgelig antallet.

Sig til hvis der skal mere uddybende forklaring til.

Kode:

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

var IE=(document.all)?true:false;
if(!IE){document.captureEvents(Event.MOUSEMOVE);}
var boolu=false;
var Timer;

function setScroll(){
var bard=document.getElementById('bar');
var contd=document.getElementById('content');
var scrolld=document.getElementById('scrollbar');

if(contd.scrollHeight>contd.clientHeight){
contd.scrollTop="0";
scrolld.style.height=398/(contd.scrollHeight/contd.clientHeight);
}else{
scrolld.style.display="none";
bard.style.display="none";
}
}

function enableScroll(e){
var bard=document.getElementById('bar');
var contd=document.getElementById('content');
var scrolld=document.getElementById('scrollbar');

if(boolu==true){
tempt=parseInt(scrolld.style.top);
tmpY=(IE)?event.clientY:e.pageY;
document.onmousemove=scrollBar;
}
}

function scrollBar(e){
var bard=document.getElementById('bar');
var contd=document.getElementById('content');
var scrolld=document.getElementById('scrollbar');
mosY=(IE)?event.clientY:e.pageY;

if(boolu==true&&(tempt+mosY-tmpY)>=0&&(tempt+mosY-tmpY)<=398-parseInt(scrolld.style.height)){
scrolld.style.top=(tempt+mosY-tmpY)+"px";
contd.scrollTop=(tempt+mosY-tmpY)*(contd.scrollHeight/contd.clientHeight);
}else if(boolu==true&&(tempt+mosY-tmpY)<=0){
scrolld.style.top=0+"px";
contd.scrollTop=0+"px";
}else if(boolu==true&&(tempt+mosY-tmpY)>=398-parseInt(scrolld.style.height)){
scrolld.style.top=398-parseInt(scrolld.style.height);
contd.scrollTop=(tempt+mosY-tmpY)*(contd.scrollHeight/contd.clientHeight);
}
}

function scrll(dir){
var bard=document.getElementById('bar');
var contd=document.getElementById('content');
var scrolld=document.getElementById('scrollbar');

contd.scrollTop+=10*dir;
scrolld.style.top=contd.scrollTop/(contd.scrollHeight/contd.clientHeight);
Timer=setTimeout(function(){scrll(dir)},10);
}

document.onmousedown=enableScroll;
document.onmouseup=function(){boolu=false};
document.onblur=function(){boolu=false};
window.onload=setScroll;
</script>
Avatar billede Slettet bruger
13. september 2006 - 09:58 #1
Det skal måske lige nævnes at funktionen bruges således:

                        <div id="content">
                            <p>foo foo foo</p>                           
                        </div>   
                       
                        <div id="scrollers">
                            <div style="position: absolute; top: 0;" id="scrollbar"></div>
                            <div style="position:absolute;top: 45px; left: 470px; cursor: pointer;" onmousedown="scrll(-1);" onmouseup="clearTimeout(Timer);"><img src="gfx/up.png" alt="" border="0" /></div>
                            <div style="position:absolute;top:465px; left: 470px; cursor: pointer;" onmousedown="scrll(1);" onmouseup="clearTimeout(Timer);"><img src="gfx/down.png" alt="" border="0" /></div>
                        </div>
Avatar billede Slettet bruger
13. september 2006 - 12:52 #2
Jeg fandt selv løsningen.
Rettede det til følgende, hvis folk skulle have interessen:

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

var IE=(document.all)?true:false;
if(!IE){document.captureEvents(Event.MOUSEMOVE);}
var boolu=false;
var Timer;


function enableScroll(e,textdiv,buttondiv){
    var contd=document.getElementById(textdiv);
    var scrolld=document.getElementById(buttondiv);

    if(boolu==true) {
        tempt=parseInt(scrolld.style.top);
        tmpY=(IE)?event.clientY:e.pageY;
    }
}

function scrll(dir,textdiv,buttondiv){
    var contd=document.getElementById(textdiv);
    var scrolld=document.getElementById(buttondiv);

    contd.scrollTop+=10*dir;
    Timer=setTimeout(function(){scrll(dir,textdiv,buttondiv)},10);
}

document.onmousedown=enableScroll(this,'content','scrollbar');
document.onmousedown=enableScroll(this,'info','infoscrollbar');

document.onmouseup=function(){boolu=false};
document.onblur=function(){boolu=false};

</script>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester