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 :

[DOM] Problème de cloneNode (DOM)


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut [DOM] Problème de cloneNode (DOM)
    Bonjour,

    J'ai un petit ennui que je ne parviens pas à résoudre :
    Je souhaite ajouter dynamiquement sur une page un select et un input.
    Voici l'extrait de mon code :
    var clonePlusMoins = champPlusMoins.cloneNode(true);
    clonePlusMoins.name = 'predef_parampm' + champPlusMoins.name.substr(1);
    champReport.parentNode.appendChild(clonePlusMoins);
    var cloneText = champText.cloneNode(false);
    clonePlusMoins.name = 'predef_paramjbis' + champPlusMoins.name.substr(1);
    champReport.parentNode.appendChild(cloneText
    );


    champPlusMoins est un select et champText un input (type text).
    Et voici ce que me dit la console javascript de firefox : "champText.cloneNode is not a function" alors que pour champPlusMoins, il n'y a aucun problème.
    Pourriez vous m'éclaircir ? Je ne vois pas d'où peut venir le problème...

    Bonne journée.
    Merci par avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    Comment affectes tu la variable champText? Ton problème vient sûrement de là.

  3. #3
    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 644
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    balises code svp !!!

  4. #4
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    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
    retour += "<SELECT name='predef_paramdate" + prop + "' onchange='check_defdate(param_defval" + prop + 
    ",predef_paramdate" + prop + 
    ",predef_paramplusmoins" + prop + 
    ",predef_paramj" + prop  +
    ",predef_paramjom" + prop + 
    ",predef_paramreport" + prop + 
    ",predef_paramnbjour" + prop + 
    ",predef_paramper" + prop + 
    ",predef_paramdatefixe"+ prop + 
    ",false);'";
     
    		if (param[1].slice(0,5) == '<DATE' ) retour += " >\n";
    		else retour += " STYLE='VISIBILITY:hidden;DISPLAY:none'>\n";
    		if (param[1].search('C') != -1) retour += "<OPTION VALUE='C' SELECTED>Date calculée</OPTION>\n";
    		else retour += "<OPTION VALUE='C'>Date calculée</OPTION>\n";
    		if (param[1].search('F') != -1) retour += "<OPTION VALUE='F' SELECTED>Date fixe (JJ/MM/AAAA)</OPTION>\n";
    		else retour += "<OPTION VALUE='F'>Date fixe (JJ/MM/AAAA)</OPTION>\n";
    		if (param[1].search('R05') != -1) retour += "<OPTION VALUE='R05' SELECTED>Référence au 5</OPTION>\n";
    		else retour += "<OPTION VALUE='R05'>Référence au 5</OPTION>\n";
    		if (param[1].search('R15') != -1) retour += "<OPTION VALUE='R15' SELECTED>Référence au 15</OPTION>\n";
    		else retour += "<OPTION VALUE='R15'>Référence au 15</OPTION>\n";
    		if (param[1].search('R25') != -1) retour += "<OPTION VALUE='R25' SELECTED>Référence au 25</OPTION>\n";
    		else retour += "<OPTION VALUE='R25'>Référence au 25</OPTION>\n";
    		if (param[1].search('RD') != -1) retour += "<OPTION VALUE='RDE' SELECTED>Référence au dernier jour</OPTION>\n";
    		else retour += "<OPTION VALUE='RDE'>Référence au dernier jour</OPTION>\n";
    		retour += "</SELECT><BR>\n";
    A savoir que prop est un entier s'incrémentant à chaque ligne de mon tableau (chaque <TR> en fait)

    Et voici me fonction check_defdate :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    function check_defdate(champ_txt,
    champDate,
    champPlusMoins,
    champText,
    champReport,
    champNbJour,
    champSuivPrec,
    isAvailable){
     
      with (form2){  
     
      if ((isAvailable) && (champ_txt.value.slice(0,5) != '<DATE')) {
    		cacheTousLesElements(champDate.parentNode);		
       } else { // DATE
         		champ_txt.value = "<DATE" + champDate.value + '>';
    			cacheTousLesElements (champReport.parentNode);
    			showElement(champReport);	
    			showElement(champNbJour);
    			showElement(champSuivPrec);
    			showElement(champPlusMoins);
    			showElement(champText);		
     
    		if (!document.getElementById('predef_parampm' + champPlusMoins.name.substr(1))) {
    				var clonePlusMoins = champPlusMoins.cloneNode(true);
    				clonePlusMoins.name = 'predef_parampm' + champPlusMoins.name.substr(1);
    				champReport.parentNode.appendChild(clonePlusMoins);
    				var cloneText = champText.cloneNode(false);
    				clonePlusMoins.name = 'predef_paramjbis' + champPlusMoins.name.substr(1);
    				champReport.parentNode.appendChild(cloneText);			
    		}
    			tmppm = document.getElementById('predef_parampm' + champPlusMoins.name.substr(1));
    			tmpjbis = document.getElementById('predef_paramjbis' + champPlusMoins.name.substr(1));
    			showElement(tmppm);
    			showElement(tmpjbis);
    	}
    	} 
    }

  5. #5
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Vous ne voyez pas vous non plus ?

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par linar009
    champPlusMoins est un select et champText un input (type text).
    Et voici ce que me dit la console javascript de firefox : "champText.cloneNode is not a function" alors que pour champPlusMoins, il n'y a aucun problème.
    Comment est-ce que tu récuperes ces deux variables?

  7. #7
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Et bien les deux variables suivantes sont passées en paramètre à la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'check_defdate(param_defval" + prop + 
    ",predef_paramdate" + prop + 
    ",predef_paramplusmoins" + prop + 
    ",predef_paramj" + prop  +
    ",predef_paramjom" + prop + 
    ",predef_paramreport" + prop + 
    ",predef_paramnbjour" + prop + 
    ",predef_paramper" + prop + 
    ",predef_paramdatefixe"+ prop + 
    ",false);'";
    Et donc finalement champText correspond à predef_paramjX (predef_paramj3 par ex.) qui est un input de type text :

    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
    retour += "<input type='text' style='width:25px' name='predef_paramj" + prop + "' 
    onkeyup='check_defj(param_defval" + prop +
    ",predef_paramj" + prop + 
    ",predef_paramplusmoins" + prop +
    ",predef_paramjom" + prop + ")' 
    onBlur='check_defj(param_defval" + prop + 
    ",predef_paramj" + prop + 
    ",predef_paramplusmoins" + prop + 
    ",predef_paramjom" + prop + ")' maxlength='3'";
        if (form2.newparam_defvalue.value.slice(0,3) == '<J+') {
    		posfin = form2.newparam_defvalue.value.search(/>/);
    		posplus = form2.newparam_defvalue.value.search(/[\+-]/);
    		retour += " value='" + form2.newparam_defvalue.value.slice(posplus+1, posfin) + "' > ";
    	} else if (form2.newparam_defvalue.value.slice(0,6) == '<DATEC') {
    		posfin = form2.newparam_defvalue.value.search('[JO|M]');
    		posplus = form2.newparam_defvalue.value.search(/[\+-]/);
    		retour += " value='" + form2.newparam_defvalue.value.slice(posplus+1, posfin) + "' > ";
        }else{
          retour += " STYLE='VISIBILITY:hidden;DISPLAY:none'> ";
        }

Discussions similaires

  1. [DOM] Problème de manipulation DOM avec IE7
    Par volivi dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 25/04/2006, 11h49
  2. [DOM] Problème bizarre avec DOM et XPath
    Par fragmonster dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/03/2006, 15h43
  3. [DOM] problème de dom
    Par spilliaert dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/02/2006, 23h18
  4. [DOM] Problème de récuperation de DOM
    Par Oric dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/12/2005, 13h53
  5. [DOM]Problème de liens sous ie
    Par Buster dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/05/2005, 17h13

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