Avatar billede bse11703 Nybegynder
16. juni 2003 - 00:55 Der er 21 kommentarer og
1 løsning

X koordinatet

Jeg skal finde et "div" elements x koordinat, så jeg har fundet flg. kode der virker i IE men ikke i NS(6):

function moveIt() {
    if (document.all) {
        x = (event.x - document.all['cont'].offsetLeft)-2;
    } else if (document.layers) {
        x = (event.x - document.layers['cont'].offsetLeft)-2;
    } else if (document.getElementById&&!document.all) {
        x = (event.pageX - document.getElementById('cont').offsetLeft)-2;
    }
}

Nogen der kan hjælpe???
Avatar billede skovenborg Nybegynder
16. juni 2003 - 00:58 #1
document.all virker kun i IE. Men du kan altid bruge document.getElementById fx
document.getElementById('cont') osv.
Avatar billede bse11703 Nybegynder
16. juni 2003 - 01:00 #2
Ja det ved jeg, men den returnerer ikke x koordinatet i NS - jeg ved ikke om det er event.pageX der skal kaldes eller hvad men det virker i hvertfald ikke...
Avatar billede skovenborg Nybegynder
16. juni 2003 - 01:09 #3
næh, pageX er god nok - den skulle gerne virke i NS. Skulle du ikke også gøre det ved de andre? Altså:
else if (document.layers) {
        x = (event.pageX - document.layers['cont'].offsetLeft)-2;}
Avatar billede bse11703 Nybegynder
16. juni 2003 - 01:14 #4
nej pageX virker ikke, men det gør event.x (i IE) - pageX returnerer 'undefined' i NS, nok fordi at det ikke er for dokumentet, men for div-elementet
Avatar billede bse11703 Nybegynder
16. juni 2003 - 01:19 #5
Jeg kan fortælle at jeg vil lave en slags 'progress' bar, hvorved et div-element er placeret inden i et andet, og dets størrelse afhænger så af hvor i det ydre div-element musen befinder sig - dvs. hvis musen er inde på midten, skal det indre div-elements højre side være ligeså
Avatar billede skovenborg Nybegynder
16. juni 2003 - 01:20 #6
øhm, hvad er det egentlig scriptet skal gøre?

pageX er jo cursorens umiddelbare position på siden og ikke kun for et enkelt objekt.
Avatar billede bse11703 Nybegynder
16. juni 2003 - 01:28 #7
nej men det er det eneste jeg kunne finde for NS - jeg skal bare bruge cursorens x koordinat for div-elementet...
Avatar billede skovenborg Nybegynder
16. juni 2003 - 01:48 #8
Du kan prøve med det her:
function moveIt(evnt) {
  if (document.all) {
        x = (event.x - document.all['cont'].offsetLeft)-2;
  } else if (document.layers) {
        x = (evnt - document.layers['cont'].offsetLeft)-2;
    } else if (document.getElementById&&!document.all) {
        x = (evnt - document.getElementById('cont').offsetLeft)-2;
        alert(evnt);
    }
  }

hvor evnt kunne være en mouseover på din yderste div (eller hvordan du nu vil ha' den, altså:
<div onmouseover="moveIt(event.layerX);">
Avatar billede skovenborg Nybegynder
16. juni 2003 - 02:06 #9
Læste faktisk i manualen at event.x også virker (er et synonym/alias for layerX), men kunne ikke få det til at virke, så jeg vil anbefale layerX for nu.
Avatar billede bse11703 Nybegynder
16. juni 2003 - 02:12 #10
Det virkede, jeg takker mange gange - skriv et svar, så får du dine points...
Avatar billede skovenborg Nybegynder
16. juni 2003 - 02:17 #11
uhh, jeg svarede rigtigt HURRA!!! ;-)

Kig evt. på denne side for at se hvordan det skal gøres med almindelig java script:
http://devedge.netscape.com/library/manuals/2000/javascript/1.3/guide/

Rart at der er nogen som vil tage sig tid til at lave sine sider cross-browser kompitable :-)
Avatar billede roenving Novice
16. juni 2003 - 02:21 #12
;O)
Avatar billede roenving Novice
16. juni 2003 - 02:22 #13
>>skovenborg

Når du nu bruger if's hele vejen burde din funktion vel springe helt ud af på en eller anden måde ?o]
Avatar billede skovenborg Nybegynder
16. juni 2003 - 02:33 #14
tjaa, jeg skrev sådan set bare bse11703's om. Hvordan han vil bruge det ved jeg ikke, men nu fik vi da løst dette problem :-)
Avatar billede roenving Novice
16. juni 2003 - 02:35 #15
;O) -- igen ...
Avatar billede bse11703 Nybegynder
16. juni 2003 - 10:36 #16
Jeg kan sige at der i hvert if mulighed er en action, der ikke er beskrevet her for at besvare plads nemlig at div2's bredde = x
Avatar billede roenving Novice
16. juni 2003 - 12:21 #17
Men hvis svaret på alle if's er naej hvad så ?-)
Avatar billede skovenborg Nybegynder
16. juni 2003 - 13:26 #18
nåja, roenving har ret - igen. Husk lige at lave en ... else { et eller andet}
til sidst. Der er jo nogen browsere som slet ikke har javascript eller understøtter de valgte muligheder.
Avatar billede roenving Novice
16. juni 2003 - 13:27 #19
-- mest et spm om god kodeskik ;O)
Avatar billede skovenborg Nybegynder
16. juni 2003 - 13:43 #20
så skal det måske også tilføjes at man bør skrive:
<script language="javascript">
<!--
function moveIt() {
    if (document.all) {
        x = (event.x - document.all['cont'].offsetLeft)-2;
    } else if (document.layers) {
        x = (event.x - document.layers['cont'].offsetLeft)-2;
    } else if (document.getElementById&&!document.all) {
        x = (event.pageX - document.getElementById('cont').offsetLeft)-2;
    }
}
// -->
</script>

Så får folk uden javascript ikke smidt en masse tekst i hovedet når de går ind på siden. Men igen et spm om god kodeskik ;-)
Avatar billede roenving Novice
16. juni 2003 - 14:17 #21
>>skovenborg
-- det er vel kun nødvendigt, hvis man bruger en browser, som ikke _forstår_ javascript (Netscape Navigator 1 og Internet Explorer 1 & 2) -- hvis de har slået det fra ignorerer browseren det da ...
Avatar billede skovenborg Nybegynder
16. juni 2003 - 14:59 #22
Jaja, det var også det jeg mente. Jeg plejer heller ikke at gøre det, men får at ens kode er perfekt og virker i alle browsere, skal man egentlig også gøre dette. Men okay, det kan godt være lige meget.
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