[javascript] OO en onclick

Pagina: 1
Acties:

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Topicstarter
Ik bouw door middel van javascript dynamisch een tabel op. Dit doe ik door een tree te maken van de html elementen van de tabel. Door midden van een functie wordt deze dan omgezet naar daadwerkelijke elementen die ik in de DOM tree kan injecteren:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var tr = createStructure( {
      tag: 'tr',
      id: 'order_'+this.id,
      className: 'hovertable',
      children: [
         {
            tag: 'td',
            width: '13',
            style: 'border:none',
            children: [
               {
                  tag:'div',
                  id: 'order_color_'+this.id,
                  className: 'coloredblock',
                  style: "background-color: "+this.color
               }
            ]
         },{....


zoiets dus... Dat werkt allemaal prima. Iedere tabel row wordt ook door middel van een javascript object gerepresenteerd (vandaar ook this.id).

Nu wil ik echter onclick events dynamisch toewijzen:

JavaScript:
1
2
3
4
5
 createStructure( {
      tag: 'button',
      id: 'button_'+this.id,
      onclick: function(){ alert(aap)}
})


Oke, dit werkt ook op zich, maar hier kan ik niet zoveel mee, natuurlijk. Dus verder:

JavaScript:
1
2
3
4
5
 createStructure( {
      tag: 'button',
      id: 'button_'+this.id,
      onclick: function(){ alert(this.id)}
})


Hier gaat het mis. this.id geeft namelijk netjes "button_xxx" terug i.p.v het id van mijn representatie object. Op zich best logisch natuurlijk. Wat ik dus wil is dat ik binnen de onlick handler toegang heb tot mijn representatie object. Ik heb al van alles geprobeerd, maar ik krijg het niet voor elkaar. Een zoektocht leverde ook niet veel op.

Het beste wat ik kon bedenken is het volgende:

JavaScript:
1
onclick: eval("function(){ alert("+this.id+")}")


Dan geeft ie in ieder geval netjes het id mee, daar heb ik in eerste instantie wel genoeg aan op zich. Maar dit moet toch mooier kunnen. Ik hoop dus dat jullie nog wat ideeën hebben...

Do diamonds shine on the dark side of the moon :?


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Topicstarter
Hey dat lijkt te werken! Thanks _/-\o_

* voodooless moet zijn zoektermen de volgende keer wat uitbreiden :O

Ik denk echter dat ik het toch nog wat anders ga doen omdat ik toch nog weer net wat meer wil... eens zien...

Edit:

voor mij werkt dit dus het beste:

JavaScript:
1
2
3
function doRequest(url,args){
   return function(){new Ajax.Request(url,{method:'post',parameters:args});};
}


en dan:
JavaScript:
1
2
3
4
5
6
7
8
{ 
   ...,
   onclick: doRequest("broodjeaap",{
      boem:'100gr',
      boter:'60gr',
      aap:'doodshoofd'}),
   ...
}

[ Voor 83% gewijzigd door voodooless op 10-05-2007 12:23 ]

Do diamonds shine on the dark side of the moon :?