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?
Annonceindlæg fra Partnertekst
26. september 2006 - 15:04
#1
hov - det er iøvrigt kun i IE, det ikke spiller - I firefox og safari fungerer det fint.
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>
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;
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; }
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">
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..
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">
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?
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
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..
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"; }
26. september 2006 - 15:14
#12
det der står ved nn4 - burde vel også virke for ie? eller hvad?
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..
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..
26. september 2006 - 15:29
#15
Jeg prøver lige uden () og []..
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 -->
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!
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
26. september 2006 - 15:37
#19
Ok :-) Hvilken rækkefølge brugte du?
26. september 2006 - 15:39
#20
ie til sidst - lige som dig.
26. september 2006 - 15:42
#21
Ahhh.. :-)
26. september 2006 - 15:42
#22
Takker for points :-)
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 !-)
Vi tilbyder markedets bedste kurser inden for webudvikling