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 :

erreur causée par la méthode appendChild() avec IE


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 29
    Points
    29
    Par défaut erreur causée par la méthode appendChild() avec IE
    Bonjour à tous,
    J'ai un probleme sous IE6 en utilisant la méthode appendChild(objet).
    J'ai testé sous firefox et chrome et sa marche sauf que avec IE (6,7 et 8) je suis bloqué.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pic = new Image();
    		pic.id = "img_thumb_"+id;
    		//pic.name = "img_thumb_"+id;
    		pic.src = "get_mini_image.php?archId="+id;
    		pic.style.display = "block";
    		pic.style.position = "absolute";
        pic.style.top = "10%";
        pic.style.left = "64%";
        parent.document.getElementById("table_principal").appendChild(pic);
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut.

    Essaye en ajoutant les styles après l'insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pic = new Image();
    pic.id = "img_thumb_"+id;
    //pic.name = "img_thumb_"+id;
    pic.src = "get_mini_image.php?archId="+id;
    parent.document.getElementById("table_principal").appendChild(pic);
    pic.style.display = "block";
    pic.style.position = "absolute";
    pic.style.top = "10%";
    pic.style.left = "64%";
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    Je vois pas pour qu'elle raison le responsable du développement web du developpez.com s'en fout de ma gueule.
    C'est très respectueux de ta part Monsieur !!!

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut

    Il faut voir à arrêter un peu la parano et comprendre que pour IE, positionner en absolute un élément qui n'est pas insérer dans le DOM peut être problématique, ce que je te propose de contourner en affectant le style (donc le positionnement) une fois ton élément ajouté dans le DOM.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Je vois que vous prenez l'id "table_principal" (il y a une faute d'orthographe mais passons), je suppose donc que vous vous accrochez à une balise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table id="table_principal">
    Peut-être devez-vous attacher l'élément à une cellule du tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <table id="table_principal">
    <tr>
       <td id="cellule_principale"></td>
    </tr>
    </table>

  6. #6
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Oui je trouve aussi que cela relève de la paranoïa ...
    Bovino tente juste d'aider ...

    Bref !

    Tu essayes d'insérer dans une balise table ?
    N'ayant pas le html on ne peut que le supposer au vu de l'id ...
    Il faut alors appender dans le thead ou tbody du table, et même si dans ton code html tu ne l'as pas précisé, pour IE ils existent
    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 !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    Bonjour messieurs,
    Je vous remercie pour vos répliques qui m'ont données des nouvelles pistes...mais toujours sans aucune résultat.
    Pour mieu vous exposer le probleme je vous fournit le code du tableau parent [Composant auquel je lui applique le appendChild]:
    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
    <table class="table_navigation_principale"  >
    		<tbody id="table_principal">
    		<tr>
    			<!--<td class="td_navigation_principale" id="ttRich" style="width:310px; border-right: 1px solid #D9DEE2;">-->
    			<td class="td_navigation_principale" id="ttRich" style="width:230px;">
    			..............	
    			</td>
    			<!--<td class="td_navigation_principale" style="width:100px; text-align:right; padding-right:10px; border-right: 1px solid #D9DEE2;">-->
    			<td class="td_navigation_principale" style="width:100px; text-align:right; padding-right:10px;">	
                 ................			
    			</td>
    			<td class="td_navigation_principale" style="width:120px;">
    			.................
    			</td>
    		</tr>
    		<tr >
    	<tr >
     <td colspan="3" style="padding:0px;" valign="top" visibility="visible" >
       ...................
    </td>
    </tr>
    </tbody>
    	</table>
    Merci d'avance pour votre aide

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par hastiok Voir le message
    Je vois pas pour qu'elle raison le responsable du développement web du developpez.com s'en fout de ma gueule.
    C'est très respectueux de ta part Monsieur !!!
    Babino, je suis vraiment tres désolé, j'ai pas fait attention et j'ai pensé que ce code ci dessous correspand aux styles d'insertion dont tu m'a parlé.

    #Bovino{
    chambreur: max;
    cassant: repeatedly;
    mechant: never;
    competent: none !important;
    }

  9. #9
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut <td>
    Je ne sais pas pq mais j'ai testé de l'accrocher à (un seul à la fois bien entendu):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //1
    <table id="table_principal">
    //2
    <tbody id="table_principal">
    //3
    <tr id="table_principal">
    //4
    <td id="table_principal">
    Et seul le td me fait apparaitre l'image.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Points : 330
    Points
    330
    Par défaut
    C'est la première fois que je vois Image être utilisé comme un Node.

    Je suis surtout surpris que cela fonctionne sous certains navigateurs.
    Donc, on peut aussi envisager un appendChild avec Array, Date, Number ?

    Pour être plus clean, remplace ton new Image() par un document.createElement('IMG').



    Pas d'insertion possible de tag IMG dans un TBODY. Un TD ou un TH, oui. Sinon, le résultat risque d'être improbable.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par kernelfailure Voir le message
    Pas d'insertion possible de tag IMG dans un TBODY. Un TD ou un TH, oui. Sinon, le résultat risque d'être improbable.
    +1

    Ce qui n'empêche pas de suivre la recommandation de Babino

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    +1 varnime qui dit depuis le début de l'attacher au <td>.
    Hein, E.baa.


    Par contre, je veux bien connaitre les inconvénients d'un new Image(), même si dans ce cas-ci j'aurais de toute manière fait un createElement.

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par vermine Voir le message
    +1 varnime qui dit depuis le début de l'attacher au <td>.
    Hein, E.baa.

    Exact, mais tu as quand même pris la peine de tester les 3 précédents

    Citation Envoyé par vermine Voir le message
    Par contre, je veux bien connaitre les inconvénients d'un new Image(), même si dans ce cas-ci j'aurais de toute manière fait un createElement.
    Ben contrairement à <IMG> c'est un objet Javascript, pas HTML ...
    (comme Array, Integer ... cf. kernelfailure)

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Attention aux confusions avec new Image()

    Le tableau Images est une propriété de l'objet document, donc new Image() crée en fait un élément HTML de type img !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alert(new Image())  // => [object HTMLImageElement]
    alert(new Image().tagName)  // => 'IMG', même avec IE6 !!!
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Oups !

    Au temps pour moi
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Points : 330
    Points
    330
    Par défaut
    Idem

    Merci pour cette correction

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    Bonjour Messieurs,

    Pour éviter les problèmes que peut causer l'utilisation d'un tableau avec la méthode appendChild, j'ai utilisé dans la page parente une balise DIV au lieu du tableau que je lui applique appendChild comme suit:
    parent.document.getElementById("id_du_div").appendChild(pic);.
    Maintenant ca marche avec IE8 (ca qui n'été pas le cas avant), sauf que avec ie6 c'a marche pas .Notre client exige absolument que c fonctionne avec IE6.
    Est ce que ya un moyen ou une autre piste à essayer. Je suis pret à m'investir dans n'importe qu'elle proposition pour que cela fonctionne.
    Merci d'avance

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 29
    Points
    29
    Par défaut Probleme résolu
    Bonjour à tous,
    Finalement j'ai réussi à résoudre mon probleme.
    En fait l'ors de la création de l'élément image et en essayant les deux alternatives:
    pic = new Image(); et pic = document.createElement('IMG');
    J'avais toujours le même souci avec IE6 !!!
    Apres qq jours j'ai trouvé le secret du mystérieu message:"Argument inavalide" quand j'utilise la méthode appendChild.
    Il a fallu crée l'élément comment suit:
    pic = parent.document.createElement('IMG');

    Merci à vous tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/06/2015, 12h54
  2. Erreur de déploiement causée par Autorun.inf
    Par Mariquiqui dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2009, 15h35
  3. Erreur causée par une boucle ?
    Par lucckyly2 dans le forum Langage
    Réponses: 4
    Dernier message: 01/07/2009, 16h53
  4. Erreur 438 propriété ou méthode non gérée par cet objet
    Par aba_tarn dans le forum VBA Access
    Réponses: 0
    Dernier message: 22/02/2008, 11h30
  5. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 10h53

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