Avatar billede powerduck Nybegynder
26. september 2006 - 15:01 Der er 22 kommentarer og
1 løsning

Scroll funktion på div med ID uden Style

hej. jeg har et javascript, der scoller indholdet af en div.

Og det virker fint - så længe jeg beholder style="bla bla" i mit div tag.

Det jeg gerne ville var at flytte alle mine styles over i et stylesheet og derfor kun benytte mit divs ID.

Så derfor spørgsmålet: Er der een der kender et scroll-script, der fungerer på ID og ikke på style?
Avatar billede powerduck Nybegynder
26. september 2006 - 15:04 #1
hov - det er iøvrigt kun i IE, det ikke spiller - I firefox og safari fungerer det fint.
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:06 #2
Du kan jo bruge style på dit div, med ID..

Eksempel:

<style type="text/css">
#mitdiv
{
noget her
}
</style>

og:

<div id="mitdiv">noget indhold her</div>
Avatar billede powerduck Nybegynder
26. september 2006 - 15:06 #3
Det har muligvis noget med denne browserdetection at gøre?
var dom = document.getElementById ? true:false;
var nn4 = document.layers ? true:false;
var ie4 = document.all ? true:false;
Avatar billede jokkejensen Novice
26. september 2006 - 15:06 #4
det skulle være underordnet om det ex er:

<div id="mitdiv">
#mitdiv
{
width: 300px;
height: 300px;
overflow: auto;
}
eller
<div class="mitdiv">
.mitdiv
{
width: 300px;
height: 300px;
overflow: auto;
}
Avatar billede powerduck Nybegynder
26. september 2006 - 15:08 #5
hvis jeg fastholder mit div sådan her , virker det:
<div id="contentClip" style="position: absolute; top: 100px; left: 400px; width: 350px; height: 440px; clip:rect(0px,350px,440px,0px); visibility: visible; z-index: 5; overflow: hidden;">
<div id="content">

Men jeg vil gerne have at mit div ser sådan ud:
<div id="contentClip">
<div id="content">
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:08 #6
powerduck> Husk at gøre brug af browserdetection i den rette rækkefølge, når du laver checket/IF-sætningerne..

Jeg mener at en eller flere browsere understøtter mere end 1 referencetype til elementer..

Eksempel document.getElementById og document.all..
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:09 #7
<style type="text/css">
#contentClip
{
position: absolute; top: 100px; left: 400px; width: 350px; height: 440px; clip:rect(0px,350px,440px,0px); visibility: visible; z-index: 5; overflow: hidden;
}
</style>

<div id="contentClip">
<div id="content">
Avatar billede powerduck Nybegynder
26. september 2006 - 15:10 #8
mener du, thesurfer, at løsningen kan være at bytte rundt på de tre linier jeg har indsat ovenfor? - altså teste for IE først?
Avatar billede powerduck Nybegynder
26. september 2006 - 15:11 #9
jeg er med på hvordan jeg får lagt mine styles ind i et stylesheet, men det er javascriptet, som jeg mistænker for at detecte elementer på siden efter styles istedet for efter ID'er
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:12 #10
powerduck> Jeg kan desværre ikke huske række følgen..

Jeg prøvede det engang med browserne Opera, Mozilla FireFox, Netscape og Internet Explorer.. men kan ikke huske i hvilken rækkefølge det var..
Avatar billede powerduck Nybegynder
26. september 2006 - 15:14 #11
Jeg har lige kigget mit script igennem og så vidt jeg kan se er det her den laver forskel på nn og ie

function eventLoader(){

    if(ie4){

        // Up-arrow X and Y variables

        upL = document.all.up.style.pixelLeft;

        upT = document.all.up.style.pixelTop;       

        // Down-arrow X and Y variables

        downL = document.all.down.style.pixelLeft;

        downT = document.all.down.style.pixelTop;

        // Scrollbar X and Y variables

        dragL = document.all.drag.style.pixelLeft;

        dragT = document.all.drag.style.pixelTop;       

        // Ruler Y variable

        rulerT = document.all.ruler.style.pixelTop;       

        // Height of content layer and clip layer

        contentH = parseInt(document.all.content.scrollHeight);

        contentClipH = parseInt(document.all.contentClip.style.height);

    }

    else if(nn4){

        // Up-arrow X and Y variables

        upL = document.up.left;

        upT = document.up.top;       

        // Down-arrow X and Y variables

        downL = document.down.left;

        downT = document.down.top;       

        // Scrollbar X and Y variables

        dragL = document.drag.left;

        dragT = document.drag.top;       

        // Ruler Y variable

        rulerT = document.ruler.top;

        // Height of content layer and clip layer

        contentH = document.contentClip.document.content.clip.bottom;

        contentClipH = document.contentClip.clip.bottom;

    }

    else if(dom){

        // Up-arrow X and Y variables

        upL = parseInt(document.getElementById("up").style.left);

        upT = parseInt(document.getElementById("up").style.top);

        // Down-arrow X and Y variables

        downL = parseInt(document.getElementById("down").style.left);

        downT = parseInt(document.getElementById("down").style.top);

        // Scrollbar X and Y variables

        dragL = parseInt(document.getElementById("drag").style.left);

        dragT = parseInt(document.getElementById("drag").style.top);

        // Ruler Y variable

        rulerT = parseInt(document.getElementById("ruler").style.top);

        // Height of content layer and clip layer

        contentH = parseInt(document.getElementById("content").offsetHeight);

        contentClipH = parseInt(document.getElementById("contentClip").offsetHeight);

        document.getElementById("content").style.top = 0 + "px";

       

    }
Avatar billede powerduck Nybegynder
26. september 2006 - 15:14 #12
det der står ved nn4 - burde vel også virke for ie? eller hvad?
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:19 #13
Det er ikke linierne i 26/09-2006 15:06:10 der skal være i en bestemt rækkefølge..

Det er dine IF-sætninger, som er linierne i 26/09-2006 15:14:13..


En simpel test:

<div id="mitdiv">hello world</div>

<script type="text/JavaScript" language="JavaScript">
var dom = document.getElementById ? true:false;
var nn4 = document.layers ? true:false;
var ie4 = document.all ? true:false;

if (dom) { alert("dom: " + document.getElementById("mitdiv").innerHTML) }
else if (nn4) { alert("nn4: " + document.layers["mitdiv"].innerHTML) }
else if (ie4) { alert("ie4: " + document.all["mitdiv"].innerHTML) }

</script>

Det skal nok passe med, at jeg har taget fejl af "()" og "[]" i nn4 og ie4..
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:28 #14
Jeg lavede lige testen, og fik følgende resultater:

Resultater:

Opera: dom, ie4
Mozilla FireFox: dom
Internet Explorer: dom, ie4
Netscape: dom


Hvis () og [] er korrekt brugt..
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:29 #15
Jeg prøver lige uden () og []..
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:34 #16
Jeg har fjernet div og tilhørende kode, så nu ser koden og resultatet sådan ud (samme resultat):

<script type="text/JavaScript" language="JavaScript">
var dom = document.getElementById ? true:false;
var nn4 = document.layers ? true:false;
var ie4 = document.all ? true:false;

if (dom) { alert("dom") }
else if (nn4) { alert("nn4") }
else if (ie4) { alert("ie4") }
else alert("ingen af dem / ukendt browser / manglende understøttes")

</script>

<!--

Resultater:

Opera: dom, ie4,
Mozilla FireFox: dom
Internet Explorer: dom, ie4
Netscape: dom

-->
Avatar billede powerduck Nybegynder
26. september 2006 - 15:35 #17
Hæ hæ  det virkede sgu. Tak for hjælpen. theSurfer smider du et svar - så du an få nogle point!
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:36 #18
Jeg undrer mig meget over at Netscape ikke sagde noget ved "nn4"..

Rækkefølgen burde så være den omvendte, da de alle understøtter dom..

Dvs:

nn4 = skulle fange Netscape men gør det ikke?
ie4 = fanger Opera og Internet Explorer
dom = fanger Opera, FireFox, Internet Explorer, FireFox
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:37 #19
Ok :-)

Hvilken rækkefølge brugte du?
Avatar billede powerduck Nybegynder
26. september 2006 - 15:39 #20
ie til sidst - lige som dig.
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:42 #21
Ahhh.. :-)
Avatar billede thesurfer Nybegynder
26. september 2006 - 15:42 #22
Takker for points :-)
Avatar billede roenving Novice
28. september 2006 - 12:20 #23
Hvis en style er defineret i et stylesheet tilhører stylen selectoren i stylesheetet og ikke de elementer, som selectoren peger på ...

-- og Netscape 6+ kan selvfølgelig ikke genkende nn4, da de ikke understøtter (i)layer-tag !-)
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