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 :

problème d'appel de fonction en utilisant innerHTML


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Points : 13
    Points
    13
    Par défaut problème d'appel de fonction en utilisant innerHTML
    Bonsoir,

    Je rencontre un problème inexplicable, j'ai simplifié le code pour que ce soit plus facile à comprendre. J'utilise le DOM pour créer dynamiquement un tableau dans un frame et je voudrais exécuter une fonction en utilisant la propriété innerHTML

    Ce premier code fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ligne(numero) {
    ...
    cellule = parent.frames[0].document('td');
    var html = '<a href="javascript:alert(' + numero + ')">essai_de_fonction</a>';
    cellule.innerHTML = html;
    ...
    }
    Mais ce deuxième code lui ne marche pas ; j'obtiens le message d'erreur "objet attendu", comme si la fonction appelée (essai) n'était pas vue par le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function essai(num) {
    alert(num);
    }
    function ligne(numero) {
    ...
    cellule = parent.frames[0].document('td');
    var html = '<a href="javascript:essai(' + numero + ')">essai_de_fonction</a>';
    cellule.innerHTML = html;
    ...
    }

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    ça dit rien à personne alors ?

    Je joins les fichiers html au cas où ...

    le code se trouve dans le fichier bas.html

    merci
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Bon bin personne n'a trouvé (ou cherché ?) dommage.

    Après plusieurs jours je viens enfin de résoudre le problème.

    Celui-ci ne se produit que dans un système de frames :

    si on crée à la volée avec innerHTML dans un frame X, un tag <a> appelant une fonction, à partir d'un frame Y, il faut écrire le code de la fonction dans le frame X et non dans le frame Y sinon la fonction n'est pas "vue".

    Voila si ça peut être utile à quelqu'un d'autre ...

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    code horriblement... laid;

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Et alors, tu ne réponds que si le code est joli ?

    laid ça veut dire quoi ? pas optimisé ? tu as un exemple ?

    tu connais un autre moyen pour créer et supprimer des lignes de tableau à la volée dans un frame ?

  6. #6
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Salut crak

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    var html = '<a href="javascript:function() {essai(' + numero + ')}">essai_de_fonction</a>';
    ça donne quoi ?
    Cliquez sur

    Evitez de mettre Probleme
    dans les titres de vos posts

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Merci pour ta réponse NeHuS.

    Avec ton code je n'obtiens plus de message d'erreur mais la fonction n'est pas exécutée.

    De toutes façons ça marche en écrivant la fonction dans le frame dans lequel le tableau est créé à la volée.
    Autre solution qui doit sans doute marcher aussi : écrire toutes les fonctions dans un fichier js séparé.

    bye

Discussions similaires

  1. Appel de fonction javascript dans innerHtml
    Par Empty_body dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 14/03/2006, 12h41
  2. Problème d'appel de fonction
    Par claralavraie dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/12/2005, 20h17
  3. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  4. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  5. Réponses: 4
    Dernier message: 19/04/2004, 13h41

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