Avatar billede emileej Nybegynder
11. maj 2001 - 16:02 Der er 24 kommentarer og
2 løsninger

Få xy positionen på et billede (ikke i et layer)...

Jeg har et billede hvorved jeg godt vil have et layer jeg har til, at dukke op (altså laget skal dukke op lige ved billedet). Problemet er ,at billedets position ikke på nogen måde er bestemt ved pixels, da det er i en tabel, der er centreret på siden...

Hvordan hitter jeg positionen på billedet?

E-)mil
http://eej.dk
http://fotx.net/emileej
Avatar billede jumper Nybegynder
11. maj 2001 - 17:30 #1
<img src=\"noget.gif\" id=\"DitBillede\">

<script>
function getDim(el){
    var rd = {x:el.offsetLeft,y:el.offsetTop}, tEl=el.offsetParent
    while (tEl){
        rd.x += tEl.offsetLeft
        rd.y += tEl.offsetTop
        tEl = tEl.offsetParent
    }
    return rd
}

var billedPosition = getDim(DitBillede)
alert(\"x: \" + billedPosition.x + \"\\ny:\" + billedPosition.y)

</script>

/Thor
Avatar billede jakoba Nybegynder
11. maj 2001 - 17:42 #2
og i NS4  (men ikke NS6):

  <img src=\"noget.gif\" id=\"DitBillede\" name=\"Ko\">

    alert( \"X-koordinaten er: \" +document.images[\"Ko\"].x +\"\\n\"
          +\"Y-koordinaten er: \" +document.images[\"Ko\"].y );

mvh JakobA
Avatar billede emileej Nybegynder
11. maj 2001 - 18:07 #3
>>jumper
Det vil sige:
var x=document.all.mitBillede.offsetLeft+document.all.mitBillede.offsetParent.offsetLeft;
var y=document.all.mitBillede.offsetTop+document.all.mitBillede.offsetParent.offsetTop;
?

E-)mil
Avatar billede jumper Nybegynder
11. maj 2001 - 18:25 #4
emileej, det vil sige at du skal lægge offsetLeft/offsetTop sammen for alle de elementer der er offsetParent til mitBillede, startende fra mitBillede, dernæst til dens td, så dens tr, så dens table, osv, indtil den når <HTML>.

Derfor er det nemmere at bruge en funktion som f.eks. getDim, der selv looper igennem fra mitBillede til HTML ;)

/Thor
Avatar billede emileej Nybegynder
11. maj 2001 - 20:45 #5
Jammen det kan jeg ikk bruge til noget - den yderste tabel er jo centreret.
Avatar billede jakoba Nybegynder
11. maj 2001 - 21:02 #6
Hvad med at sætte jumpers script ind og teste.

Hvis du ikke ønsker positionen i vinduet men ønsker at stoppe ved fx en tabel kan du ændre funktionen spm følger:

function getDim(el){
    var tE2 = document.getElementById(\"tabelNavn\")
    var rd = {x:el.offsetLeft,y:el.offsetTop}, tEl=el.offsetParent
    while (tEl){
        rd.x += tEl.offsetLeft
        rd.y += tEl.offsetTop
        if ( tEl == tE2 ) break;
        tEl = tEl.offsetParent
    }
    return rd
}

efter at have sat en id=\"tabelNavn\" i den tabel (eller div eller had det nu er for en container) du vil find x,y ud til.

mvh JakobA
Avatar billede emileej Nybegynder
12. maj 2001 - 09:00 #7
Jow jow - ville bare ikk begynde at indsætte noget (tager en del tid i min rodede kode), før jeg var helt sikker på, at det overhovedet kunne bruges :)

E-)mil
http://eej.dk
http://fotx.net/emileej
Avatar billede jumper Nybegynder
12. maj 2001 - 12:35 #8
emileej, smid min kode ind og prøv den. Den giver dig de absolutte X og Y værdier for dit billede (der ikke er absolut positioneret), uanset hvordan du har bygget siden op. Så vidt jeg husker ville duhave xy position på et billede, og det får du med min getDim()funktion.

/Thor
Avatar billede emileej Nybegynder
12. maj 2001 - 22:12 #9
GREAT! Den virker på IE, men virker den oxo på resten af browser armeen?
Avatar billede jakoba Nybegynder
12. maj 2001 - 22:15 #10
Nej den er IE only.
Check for ns4 og brug svar af 11/05 2001 17:42:37 der
Avatar billede emileej Nybegynder
12. maj 2001 - 22:21 #11
Jammen hvad så med NS6?
Avatar billede emileej Nybegynder
13. maj 2001 - 11:04 #12
Hvilke versioner af NS skal svaret 11/05 2001 17:42:37 bruges til - og hvad skal jeg gøre med resten?
Avatar billede jakoba Nybegynder
13. maj 2001 - 11:14 #13
Det virker i NS4.0 til 4.7??.
NS3 kan slet ikke.
MS6 er jeg sikker på kan, men ved ikke hvordan.
Avatar billede emileej Nybegynder
13. maj 2001 - 11:19 #14
Hmmm...

>>jumper

Ved du det?
Avatar billede olebole Juniormester
13. maj 2001 - 16:39 #15
<ole>
Du kan bruge Thor\'s funktion (der iøvrigt ligner den, vi altid bruger på mit arbejde), hvis du \'med rund hånd spreder lidt\' parseInt()\'er. NS6 er lidt mere hysterisk med positions-værdierne - så de skal ofte trækkes gennem en parseInt(værdi) for at NS6 kan læse dem. F.eks:  rd.x += parseInt(tEl.offsetLeft) ...osv. Prøv dig lidt frem - og brug nogle alerts til at finde ud af, hvor det går galt  :o)
/mvh
</bole>
Avatar billede emileej Nybegynder
13. maj 2001 - 17:15 #16
Thors funktion til Netscape virker altså også i NS6?
Avatar billede olebole Juniormester
13. maj 2001 - 18:11 #17
Yepper - og får du problemer, må du prøve at parse de enkelte delresultater som integer...altså bruge parseInt()  ;o)
/mvh
Avatar billede jakoba Nybegynder
13. maj 2001 - 18:37 #18
Det var så den sidste: NS 4..6, IE 4..5.5
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp57415.html
Avatar billede olebole Juniormester
13. maj 2001 - 18:46 #19
Præcis...!  :o)
Avatar billede emileej Nybegynder
13. maj 2001 - 19:09 #20
Jeg har lidt travlt, så jeg har sat pointene op på hundrede i håb om at i vil skrive den færdige getDim funktion (med alle browserforbehold) :)

E-)mil
Avatar billede jakoba Nybegynder
13. maj 2001 - 19:40 #21
værsgod:

function getXYcoord ( obj ) { // det objekt (billed, td, div, etc) du vil have coordinater på
  var elm = obj;
  var rd = { x:0 ,y:0 };
  do { rd.x += parseInt( elm.offsetLeft );
      rd.y += parseInt( elm.offsetTop );
      elm = elm.offsetParent;
  } while ( elm );
  return rd
}; //end getXYcoord ( string ) -> object{x,y}

mvh JakobA
Avatar billede jakoba Nybegynder
13. maj 2001 - 19:47 #22
gal. fik ikke ns4 med.

function getXYcoord ( obj ) { // det objekt (billed, td, div, etc) du vil have coordinater på
  var rd = { x:0 ,y:0 };
  if (document.layers) { // NS 4
    rd.x = obj.x;
    rd.y = obj.y;
  } else {              // IE og NS 6
    var elm = obj;
    do { rd.x += parseInt( elm.offsetLeft );
      rd.y += parseInt( elm.offsetTop );
      elm = elm.offsetParent;
    } while ( elm );
  };
  return rd;
}; //end getXYcoord ( object ) -> object{x,y}
Avatar billede emileej Nybegynder
13. maj 2001 - 19:55 #23
Tark skal i have! Jeg sidder lige og er igang med at oplære Robert (på min hjemmeside) det ville være rart hvis i (hvis i har tid og lyst) gik ind på http://eej.dk og stilte ham nogle spørgsmål, så jeg kan lære ham dem han ikke kender :)

E-)mil
http://eej.dk
http://fotx.net/emileej
Avatar billede jakoba Nybegynder
13. maj 2001 - 20:09 #24
Avatar billede emileej Nybegynder
13. maj 2001 - 20:13 #25
ooopz - zorry Ole X-/
Havde sq ikke set at du også var med :)~
Avatar billede olebole Juniormester
16. maj 2001 - 14:13 #26
Hehe...det havde jeg slet ikke tænkt på :o)
...men tak!  :)
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