0
votes

Existe-t-il un moyen de charger HTML généré avec JavaScript dans un DIV spécifique?

J'ai une fonction JavaScript qui génère du contenu HTML. Cependant, l'écouteur d'événement que j'utilise chargez le contenu à la fin de la page. * J'aimerais que cela soit chargé dans un DIV spécifique.

function createForm(arr){

    ct++;
    de++;
    na++;

    const form = document.getElementById("formed");
    const divi = document.getElementById("bdd");
    arr.forEach(element => {   
        const a = element.training_diploma;
        const b = element.training_school;
        const c = element.training_level;
        const d = element.training_start_date;
        const e = element.training_end_date;

        const training_diploma = document.createElement('input');
        training_diploma.setAttribute('value', a)
        training_diploma.setAttribute('name','saved_training['.concat(ct,'][training_diploma]'))
        training_diploma.required = true

        const training_school = document.createElement('input');
        training_school.setAttribute('value', b)
        training_school.setAttribute('name','saved_training['.concat(ct,'][training_school]'))
        training_school.required = true

        const divSelect = document.createElement('div');
        divSelect.setAttribute('class', 'select')

        const training_level = document.createElement('select');
        training_level.setAttribute('value', c)
        training_level.setAttribute('id', 'rec_mode')
        training_level.setAttribute('name','saved_training['.concat(ct,'][training_level]'))
        training_level.required = true  

            const option1 = document.createElement('option');
            option1.disabled = true
            option1.innerHTML='-- Type de diplôme --';

            const option2 = document.createElement('option');
            option2.innerHTML='Formation' 
            if (option2.innerHTML == c) {
                option2.selected = true
            } 

            const option3 = document.createElement('option');
            option3.innerHTML='Brevet'
            if (option3.innerHTML == c) {
                option3.selected = true
            } 
            const option4 = document.createElement('option');
            option4.innerHTML='Bac'
            if (option4.innerHTML == c) {
                option4.selected = true
            } 
            const option5 = document.createElement('option');
            option5.innerHTML='Bac +1'
            if (option5.innerHTML == c) {
                option5.selected = true
            } 
            const option6 = document.createElement('option');
            option6.innerHTML='Bac +2'
            if (option6.innerHTML == c) {
                option6.selected = true
            } 
            const option7 = document.createElement('option');
            option7.innerHTML='Bac +3'
            if (option7.innerHTML == c) {
                option7.selected = true
            } 
            const option8 = document.createElement('option');
            option8.innerHTML='Bac +4'
            if (option8.innerHTML == c) {
                option8.selected = true
            } 
            const option9 = document.createElement('option');
            option9.innerHTML='Bac +5'
            if (option9.innerHTML == c) {
                option9.selected = true
            } 

            const option10 = document.createElement('option');
            option10.innerHTML='Doctorat'
            if (option10.innerHTML == c) {
                option10.selected = true
            } 

        const training_start_date = document.createElement('input');
        training_start_date.setAttribute('type', 'month')
        training_start_date.setAttribute('value', d)
        training_start_date.setAttribute('name','saved_training['.concat(ct,'][training_start_date]'))
        training_start_date.required = true

        const training_end_date = document.createElement('input');
        training_end_date.setAttribute('type', 'month')
        training_end_date.setAttribute('value', e)
        training_end_date.setAttribute('name','saved_training['.concat(ct,'][training_end_date]'))
        training_end_date.required = true

        const div = document.createElement('div');
        div.setAttribute('id', 'row-'+ct++)
        div.setAttribute('class', 'training_container')

        const del = document.createElement('a');
        del.setAttribute('href','javascript:removeSavedTraining('.concat(de++,')'))
        del.setAttribute('class','remove_button')
        del.innerHTML='- Supprimer cette formation'
        

        form.appendChild(divi);
        divi.appendChild(div);
        div.appendChild(training_diploma);
        div.appendChild(training_school);
        div.appendChild(divSelect);
        divSelect.appendChild(training_level);
            training_level.appendChild(option1);
            training_level.appendChild(option2);
            training_level.appendChild(option3);
            training_level.appendChild(option4);
            training_level.appendChild(option5);
            training_level.appendChild(option6);
            training_level.appendChild(option7);
            training_level.appendChild(option8);
            training_level.appendChild(option9);
            training_level.appendChild(option10);                
        div.appendChild(training_start_date);
        div.appendChild(training_end_date);
        div.appendChild(del);
    });
}

window.addEventListener("DOMContentLoaded", (event) => {
    createForm(<?php echo json_encode($training_array, JSON_PRETTY_PRINT) ?>);
});


2 commentaires

Vous ne partagez pas la fonction CreateEform - mais cela semble être la clé de ceci. Cela ne fait pas ce dont vous avez besoin (je ne sais pas si vous l'avez écrit, si oui, vous pouvez également le changer afin que cela fonctionne comme vous en avez besoin), ou vous ne l'avez pas appelé correctement.


@Robinzigmond, je viens d'ajouter la fonction à la question! Merci pour vos conseils !


3 Réponses :


1
votes

Vous pouvez utiliser élément.innerhtml pour faire ceci

https://developer.mozilla.org/fr/fr -US / DOCS / Web / API / ELEMENT / INTERHTML


0 commentaires

1
votes

Une combinaison de docuemnt.getelementByID code> et innerhtml code> devrait faire le tour.

p>

<!-- The element where you want the text -->
<div id="content"></div>


4 commentaires

Merci Anis pour votre réponse! Comment puis-je combiner innerhtml et une fonction alors? J'ai essayé ceci mais ne fonctionne toujours pas. Désolé je suis un noob chez JS ... `window.addeventlistener (" DomContentOached ", (événement) => {document.getelementbyid (" BDD "). Innerhtml = Creeeform ();});


Oui, vous pouvez faire exactement cela, si votre fonction CreateEform retourne HTML. @HYMEDGHENAI


Et rien à être désolé. Nous commençons tous quelque part;)


Il ne semble pas que ma fonction renvoie HTML (voir en question). J'ai aussi essayé Appendydild Ans Creeeelement, mais sans succès. Comment puis-je connaître le type du résultat de ma fonction?



0
votes

a trouvé la réponse!

Fondamentalement, comme l'a dit tout le monde, un "retour" manquait! Juste besoin de comprendre où placer! xxx


0 commentaires