Partage
  • Partager sur Facebook
  • Partager sur Twitter

[DHTML] ajouter des éléments

Sujet résolu
    5 mars 2009 à 14:17:05

    Salut,

    je suis entrain d'apprendre le DHTML et je butte sur un petit problème :)

    En fait, pour apprendre, j'essaie de faire un script qui permet de créer un formulaire en y ajoutant les éléments nécessaire via différents boutons.

    Donc j'arrive à générer le formulaire grâce à une fonction createform et ensuite, j'essaie de créer un fieldset dans le formulaire générer grâce à une autre fonction addFieldset mais ça coince :euh: je vous montre :

    function createForm()
    	{		
    		//Je récupère quelques variables nécessaires pour le formulaire
    		var formName = prompt("Nom de votre formulaire");
    		var formId = prompt("ID de votre formulaire");
    		var formAction = prompt("Action de votre formulaire");
    		var formMethod = prompt("Methode de votre formulaire", "GET ou POST");
    		
    		var myForm = document.createElement("form");
    		myForm.setAttribute("name", formName);
    		myForm.setAttribute("id", formId);
    		myForm.setAttribute("action", formAction);
    		myForm.setAttribute("method", formMethod);
    		
    		//Ici, j'ajoute dans la DIV (addForm) des boutons permettant d'ajouter les éléments classiques d'un formulaire (label, input, button, ...)
    		var formElements = document.getElementById("addForm");
    		
    		var addFieldsetBtn = document.createElement("input");
    		addFieldsetBtn.setAttribute("type", "button");
    		addFieldsetBtn.setAttribute("value", "Ajouter un fieldset");
    		addFieldsetBtn.addEventListener("click", addFieldset ,true);
    		
    		formElements.appendChild(addFieldsetBtn);
    		
    		document.body.appendChild(myForm);
    	}
    function addFieldset()
    	{
    		//Je récupère le texte de légende du fieldset
    		var legendText = prompt("Veuillez indiquer le texte de légende à afficher.");
    		var legend = document.createElement("legend");
    		legend.appendChild(legendText);
    		
    		var fieldset = document.createElement("fieldset");
    		fieldset.appendChild(legend);
    		
    		//Ici je coince, je ne sais pas comment écrire le fieldset dans mon form
    		myForm.appendchild(fieldset);
    	}
    


    Je pense que je m'y prend mal mais bon, comme je débute en DHTML.

    Pouvez-vous m'aiguiller ?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      5 mars 2009 à 14:21:35

      t'as juste oublier de rajouter un morceau en fait :)
      En tout cas félicitations, tu code propre dès le début. C'est rare :D
      legend.appendChild(document.createTextNode(legendText));
      
      • Partager sur Facebook
      • Partager sur Twitter
        5 mars 2009 à 14:35:16

        En effet, je suppose qu'est c'est l'erreur typique du débutant :p

        Sinon, je n'arrive toujours pas à écrire mon fieldset dans mon formulaire préalablement crée :(

        ps: pour ce qui est de la propreté du code, je suis plutôt maniaque , il ne faut pas qu'un espace blanc vienne ce glisser dans mon code sinon j'attrape des boutons :D
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          5 mars 2009 à 14:53:28

          haa ouais attends, j'avais pas fait gaffe.

          ta variable "myForm" dans la deuxième fonction n'est pas définie.

          Alors soit tu passes l'objet formulaire en paramètre soit tu le récupère avec getelbyid. et ça devrais marcher.
          • Partager sur Facebook
          • Partager sur Twitter
            5 mars 2009 à 14:58:27

            Si je fait :

            addFieldsetBtn.addEventListener("click", addFieldset(formId) ,true);
            


            La fonction se lance lors de la première fonction et elle ne doit se lancer que lorsqu'on clic sur le bouton prévu à cet effet o_O

            Sinon, j'ai essayé en mettant moi même l'ID du formulaire directement dans le code et ça marche mais c'est pas dynamique du coup ^^
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              5 mars 2009 à 15:08:49

              tu peux ruser :

              addFieldsetBtn.addEventListener("click", function () { addFieldset(formId); } ,true);
              
              • Partager sur Facebook
              • Partager sur Twitter
                5 mars 2009 à 15:19:33

                yes ça marche comme ceci :

                function createForm()
                	{		
                		//Je récupère quelques variables nécessaires pour le formulaire
                		var formName = prompt("Nom de votre formulaire");
                		var formId = prompt("ID de votre formulaire");
                		var formAction = prompt("Action de votre formulaire");
                		var formMethod = prompt("Methode de votre formulaire", "GET ou POST");
                		
                		var myForm = document.createElement("form");
                		myForm.setAttribute("name", formName);
                		myForm.setAttribute("id", formId);
                		myForm.setAttribute("action", formAction);
                		myForm.setAttribute("method", formMethod);
                		
                		//Ici, j'ajoute dans la DIV (addForm) des boutons permettant d'ajouter les éléments classiques d'un formulaire (label, input, button, ...)
                		var formElements = document.getElementById("addForm");
                		
                		var addFieldsetBtn = document.createElement("input");
                		addFieldsetBtn.setAttribute("type", "button");
                		addFieldsetBtn.setAttribute("value", "Ajouter un fieldset");
                		addFieldsetBtn.addEventListener("click", function () { addFieldset(formId); } ,true);
                
                		formElements.appendChild(addFieldsetBtn);
                		
                		document.body.appendChild(myForm);
                	}
                function addFieldset(formId)
                	{
                
                		//Je récupère le texte de légende du fieldset
                		var myForm = document.getElementById(formId);
                		var legendText = prompt("Veuillez indiquer le texte de légende à afficher.");
                		var legend = document.createElement("legend");
                		legend.appendChild(document.createTextNode(legendText));
                
                		var fieldset = document.createElement("fieldset");
                		fieldset.appendChild(legend);
                		
                		//Ici je coince, je ne sais pas comment écrire le fieldset dans mon form
                		myForm.appendChild(fieldset);
                
                	}
                

                Merci de ton aide ^^
                • Partager sur Facebook
                • Partager sur Twitter

                [DHTML] ajouter des éléments

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown