Avatar billede steffentchr Nybegynder
20. maj 2006 - 14:27 Der er 2 kommentarer og
1 løsning

Constructor, Events og "This" objektet

Halløj,

Jeg har et spørgsmål til noget, der burde være simpelt, men som ikke vil efter mit hoved:

Jeg skal konstruere et objekt, som danner nogle nye HTML-objekter. Og så ville jeg jo gerne have events på disse nye objekter til at henvise til det givne objekt, når man eksempelvis klikker på det. Jeg havde tænkt noget i retningen af dette:

<tt>
function Graph() {
    (...)
    this.divOverlay = document.createElement('div');
    (...)
    Event.observe(this.divOverlay, 'click', this.overlayClick, false);
}

Graph.prototype.overlayClick = function() {
    alert(this); // Alerts the "HTML DIV" element rather that the Graph object
}
</tt>

Det går meget fint at få eventen sat op, men når "Graph.prototype.overlayClick" kaldes, henviser "this" til det html-objekt, event'en stammer fra -- ikke til objektet, som jeg gerne ville have det til. Hvordan klarer jeg lige den?
Avatar billede olebole Juniormester
20. maj 2006 - 14:38 #1
<ole>

Det er ikke til at sige udfra de fragmenter, du viser. Generelt opretter man en variabel, der refererer til objektet selv:

function MyObj() {
  var me = this;
  this.elm = document.getElementById(ID);
  this.elm.onclick = function(){
      alert(me)
  }
  return this;
}

- umiddelbart kunne jeg forestille mig, det skal gøres noget à la:

var me = this;
Event.observe(this.divOverlay, 'click', function(){me.overlayClick()}, false);

- så tror jeg, du i 'overlayClick' kan referere til objektet selv med 'this', men jeg kender jo som sagt intet til koden  :)

/mvh
</bole>
Avatar billede steffentchr Nybegynder
22. juli 2006 - 14:43 #2
Ole, kan du ikke oprette et "svar" herinde -- så kan du få en bunke point.
Avatar billede olebole Juniormester
02. august 2006 - 14:51 #3
ups ... det kommer her. Jeg har ikke været særlig aktiv herinde på det seneste  :)
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

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