Problème de Onclick

citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 - 14 avril 2009 à 23:53
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 16 avril 2009 à 18:17
Bonjour,

Voici ma petite fonction qui créer un tableau dans une div en javascript avec un lien qui cache cette div mais cela ne fonctionne pas.

Un code vaut mieux que des longs discours donc voila :

WinTab = {
    ,height:300
    ,create:function(elmt) {
        this.elmtbox=document.getElementById(elmt);

        var oTbl = document.createElement('Table');
        oTbl.style.height = this.height+'px';

        var oTR = oTbl.insertRow(0);
        var oTD= oTR.insertCell(0);
            var oAButton = document.createElement('a');
            oAButton.href='javascript:void(0);';
            oAButton.title='Close';
            oAButton.innerHTML='Close';
            oAButton.onclick = this.close;
            oTD.appendChild(oAButton);
oTR.appendChild(oTD);
oTbl.appendChild(oTR);

        this.elmtbox.appendChild(oTbl);
        this.elmtbox.style.height=this.height+'px';
    },show:function() {
        this.elmtbox.style.display='';
    },close:function() {
        alert('close'+this.elmtbox);
        this.elmtbox.style.display='none';
    }
}

Voici le code qui lance le code :
function test() {
    WinBox.create('divtest');
    WinBox.show();
}

Le seul problème est que lorsque je clic sur le lien cela me dit que this.elmtbox est inconnue.

Qq serait pq ??

Merci d'avance,

Citt_jr
Bats toi avec les meilleurs, crève avec le reste

http://www.tsubara.net

1 réponse

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
16 avril 2009 à 18:17
Bonjour,
il s'agit d'un problème avec this, qui représente l'objet en cours...

ta
fonction
show:function() {
this.elmtbox.style.display= '';}
est appelée à partir de WinBox.show(); donc this vaut WinBox d'ou pas de problème this.elmtbox est défini.

ta fonction
close:function() {
this.elmtbox.style.display ='none';}
et appelée à partir du
onclick sur le lien, donc le this au
moment de l'éxecution représente l'objet balise A,
dans ce cas this.elmtbox
est indéfini.

Rajoutes dans ta fonction create la ligne suivante

oAButton.elmtbox =
this.elmtbox;
de la sorte l'objet oAButton aura également son this.elmtbox qui sera le même que celui de WinBox.

Dans ce cas
quelque soit la méthode d'appel de la fonction close cela fonctionnera.
Pas sûr d'être clair !!!
;O)
0
Rejoignez-nous