IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modification du innerHTML et les bindAsEventListener marchent plus


Sujet :

JavaScript

  1. #1
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut Modification du innerHTML et les bindAsEventListener marchent plus
    Bonjour,

    J'éprouve quelques difficultés avec le bindAsEventListener.
    C'est pour faire des modules un peu à la netvibes, de chaque côté de la page principale, sur mon site.
    Pour simplifier au maximum, j'ai 2 div l'un au dessus de l'autre avec dans chacun un bouton.
    Ce bouton sert à descendre le div (en fait à inverser les 2 div).

    1) Pour l'inversion, j'utilise bêtement (et le problème vient de là, mais comment faire autrement ???) la propriété innerHTML

    2) Pour "écouter" l'évènement des 2 boutons, j'utilise 2 objets d'une Class fille de type Module crée via la lib prototype (Class.create). Et j'assigne une fonction au bouton via bindAsEventListener

    *) Mon problème : L'inversion, marche bien, mais une fois que c'est fait, les boutons ne semblent plus liés à leur évènement... On clic dessus et rien ne se passe, la fonction n'est pas appelée.

    Je suppose que c'est le fait de passer par innerHTML, qui "déconstruit" le code et à la reconstruction, les bind ne sont plus liés car le innerHTML est une autre instance.

    Si quelqu'un pouvait m'aider, me donner quelques pistes svp ??
    Merci d'avance
    Goah Sha Kree

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    mon extension boule de cristal de firfox 2 ne marche pas sur firefox3 ...

    Il va donc falloir que tu nous mette un peu de code en exemple

    à priori je dirais que cela provient de la manière d'attribuer la fonction déclenchée par l'evenement ...

    la methode classique en javascript est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monObj.onclick=function(){alert(coucou')}
    ensuite faut voir si l'aatribution se fait dans une boucle, avec ou sans paramètres...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    mon extension boule de cristal de firfox 2 ne marche pas sur firefox3 ...
    MDR, je voulais déjà pas trop compliquer au premier post, et voir si y avait des gens qui viendrai m'aider
    Histoire de pas trop effrayer

    Pour le code, côté HTML/Javascript-inline, ça donnerai un truc type ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <script>
    var Module_surv = Class.create();
    Module_surv.prototype = {
      initialize: function (module_id) {
        this.module_id = module_id;
        this.button_down = $('module-'+this.module_id+'-down');
        this.button_down.onclick = this.buttonDownClick.bindAsEventListener(this);
      },
      buttonDownClick: function (evt) {
        // execution d'un appel Ajax
        // [ ... ]
        another_module = (this.module_id == 0) ? 1 : 0;
        html0 = $('module-'+this.module_id).innerHTML;
        $('module-'+this.module_id).innerHTML = $('module-'+another_module).innerHTML;
        $('module-'+another_module).innerHTML = html0;
      }
    }
    </script>
     
    <div id="module-0">
      <img id="module-0-down" title="Déplacer vers le bas" src="fleche_bas_mini.gif" />
    </div>
    <script>module_0 = new Module_surv('0');</script>
     
    <div id="module-1">
      <img id="module-1-down" title="Déplacer vers le bas" src="fleche_bas_mini.gif" />
    </div>
    <script>module_1 = new Module_surv('1');</script>
    Là, c'est simplifier au maximum. Et je rappel que j'utilise la lib Prototype pour la création de la classe.
    la fonction $(...) équivaut à document.getElementById(...)
    Goah Sha Kree

  4. #4
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Un exemple très simple : Page de test
    Goah Sha Kree

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    à priori l'attributin du onclick se faisant ici ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.button_down.onclick = this.buttonDownClick.bindAsEventListener(this);
    essaye le le modifier selon l'exemple de code que j'ai donné précédemment ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.button_down.onclick = this.buttonDownClick;
    Sur le principe, ça marche. En tout cas, au mois la première fois. Mais disons que je peux allé plus loin que la première fois...
    Toutefois, dans ma fonction buttonDownClick, j'ai besoin de pouvoir accéder à l'instance this de l'objet de type Module_surv. Et de cette manière là, dans la fonction button_down_onclick, l'instance de this que j'ai est de type Image (normal en même temps)...

    En plus, apparement, le résultat est le même.
    Goah Sha Kree

Discussions similaires

  1. [PHP 5.4] Passage de mon site en HTTPS, les fomulaires ne marchent plus
    Par fredd_75 dans le forum Langage
    Réponses: 6
    Dernier message: 12/02/2015, 14h43
  2. Les boutons ne marchent plus du tout
    Par yongxin dans le forum VB.NET
    Réponses: 3
    Dernier message: 01/07/2014, 16h08
  3. [Clavier] Les lettres E et A ne marchent plus
    Par Invité dans le forum Périphériques
    Réponses: 7
    Dernier message: 12/12/2011, 21h29
  4. Réponses: 15
    Dernier message: 12/05/2011, 16h52
  5. [XL-2000] Les fonctions HEXDEC, DECHEX, etc marchent plus !
    Par gronaze dans le forum Excel
    Réponses: 1
    Dernier message: 06/08/2009, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo