Des variable dynamique..

[Résolu]
Signaler
Messages postés
27
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
19 décembre 2009
-
Messages postés
27
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
19 décembre 2009
-
Bonjour,

Comme je ne sais pas comment expliqué le problème, je n'arrive pas à cherché la solution. Je suppose que cela est déjà arrivé a quelqu'un auparavant.

Objectif : Réalisé une pointeuse horaire

|-----------------------------------------------------------|
| jour 1    | jour 2    | jour 3    | jour 4    | jour 5    | jour 6    |
|-----------------------------------------------------------||       |       |    ===    |    ===    |    ===    |  ===  |
|-----------------------------------------------------------|
|    --:--    |    --:--    |    --:--    |    --:--    |    --:--    |  --:--  |
|-----------------------------------------------------------|
|    --:--    |    --:--    |    --:--    |    --:--    |    --:--    |  --:--  |
|-----------------------------------------------------------|
|    --:--    |    --:--    |    --:--    |    --:--    |    --:--    |  --:--  |
|-----------------------------------------------------------|
|    --:--    |    --:--    |    --:--    |    --:--    |    --:--    |  --:--  |
|-----------------------------------------------------------|

voici à quoi ressemble le tableau HTML
= : combobox (travaillé, ferié, congé, ...)
-- : input texte

Lors d'un clic sur le premier combo, j'utilise cette fonction qui permet de remplir les cases du premier jour :

function choixtype(mode){               // mode = choix selectionne dans le combo
    switch (mode) {
        case 0:
             // remplir la première case de la première ligne            document.f1.heurearj1AM.value "";        document.f1.minarj1AM.value "";
             // remplir la première case de la deuxième ligne            document.f1.heuredepj1AM.value "";    document.f1.mindepj1AM.value "";
             // remplir la troisième case de la première ligne            document.f1.heuretotj1AM.value "";    document.f1.mintotj1AM.value "";
             // remplir la quatrième case de la première ligne            document.f1.heurearj1PM.value "";        document.f1.minarj1PM.value "";
             // remplir la cinquième case de la première ligne            document.f1.heuredepj1PM.value "";    document.f1.mindepj1PM.value "";
             .... // ainsi de suite pour chaque champ
        case 1:            document.f1.heurearj1AM.value "08";    document.f1.minarj1AM.value "30";            document.f1.heuredepj1AM.value "12";    document.f1.mindepj1AM.value "30";            document.f1.heuretotj1AM.value "04";    document.f1.mintotj1AM.value "00";
            document.f1.heurearj1PM.value "13";    document.f1.minarj1PM.value "30";            document.f1.heuredepj1PM.value "17";    document.f1.mindepj1PM.value "00";
             .... // ainsi de suite pour chaque champ
        break;
    }
}

Mon problème est le suivant :
Chacun des combos correspond a une colonne, or, j'imagine qu'il est possible de ne faire qu'une fonction permettant de remplir les bonnes colonnes. Sinon, il va falloir créé autant de fonction que de combo et j'ai pas vraiment envie de faire des centaines de ligne de copier/coller !
Au départ je pensai concaténé le numéro du jour :
document.f1.heurearj+numjour+AM.value
Malheureusement cette idée ne fonctionne pas..

D'avance merci pour toute vos idées.

PS : Je vous prie d'excuser l'impersonnalité de ce post le problème est difficile a expliquer :)

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
bonjour,

    on accède comme on veut aux lignes colonnes d'un tabelau.

    document.getElementById("id du tableau").rows[n° ligne].cells[N) de colonne].innerHTML=
          ce que tu veux y mettre

    plus d'infos, un exemple : c'est ici.

    sinon, comme avec tous les éléments d'une page,
            met des ID "progressifs"  ou les mêmes name
        à chaque cellule.

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
on gérerait : getElementById("C_"+Ligne+"_"+ Colonne)
et pour le name : document.name_du_formulaire.nom_cellule[(n° ligne*nbr Colonnes)*n° colonne]
<hr />



Cordialement            Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
une piste de travail ?

<form    name="frm">
            ----
    ,
                ,
        ----
    ,
                ,
        ----
    ,
                ,
   

</form>
<script type="text/javascript">
    var t=document.getElementById("tab");
    for ( var l=0;l<t.rows.length;l++ )
    {    for ( var c=0;c<t.rows[l].cells.length;c++ )
        {    alert    (
                        document.getElementById("l"+l+"_c"+c).innerHTML +"\n"+
                        t.rows[l].cells[c].innerHTML+"\n"+
                        t.getElementsByTagName("td")[(l*t.rows[l].cells.length)+c].innerHTML+"\n"+
                        document.getElementsByName("lc")[(l*t.rows[l].cells.length)+c].value+"\n"+
                        document.frm.lc[(l*t.rows[l].cells.length)+c].value
                    )
        }
    }
</script>

il doit y avoir d'autres manières de faire que les 5 exemples.




<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
euh... pour l'exemple il vaudrait mieux taper ici
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est totalement absurde de généraliser.
Messages postés
3
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
20 août 2008

bonjour
quoi DHTML
quoi SHTML
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
<hr />

       quoi quoi                                          

Bul     [mon Site]     [M'écrire]<hr />

                En général, c'est absurde de généraliser.
Messages postés
27
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
19 décembre 2009

C'est du HTML + JavaScript, ibtissam33

Je te remercie bultez apparement la solution a mon problème se trouve bien dans ton deuxième exemple. Pour dire vrai je n'ai pas encore détaillé le code et donc testé de l'adaptater. Cela dis je pense pouvoir m'en sortir avec, j'y retourne dès que j'ai un peu plus de temps. Merci encore, je vous tiendrez au courant.
Messages postés
27
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
19 décembre 2009

Et bien en fait c'était bien plus simple que ça en avait l'air :)

Le mot magique était : getElementById("") qui permet d'incruster une variable dans le nom.
Ci dessous je colle mon code test qui m'a permis de bien comprendre le principe de fonctionnement. Il ne me reste plus qu'a ajouter tous ces "id" dans mon formulaire, faire les calculs etc...

je vais pouvoir enfin avancer, merci encore

Code :
<html>
<head>
    <title>TEST</title>

<script>
function choixtype(mode, numjour){
    switch (mode) {
        case 0:
            document.getElementById("h1j"+numjour).value = "";
            document.getElementById("h2j"+numjour).value = "";

            document.getElementById("m1j"+numjour).value = "";
            document.getElementById("m2j"+numjour).value = "";
        break;
        case 1:
            document.getElementById("h1j"+numjour).value = "08";
            document.getElementById("h2j"+numjour).value = "12";

            document.getElementById("m1j"+numjour).value = "30";
            document.getElementById("m2j"+numjour).value = "00";
        break;
    }
}
</script>

</head>

    <form name=\"f1\">
    ----

        Jour 1 |Jour 2 |
   
    ----

                    <center>
                <select id ="choixj1" name="choixj1" onchange="choixtype(document.f1.choixj1.options.selectedIndex, 1)">
                    <option value="0">&nbsp;</option>
                    <option value="1">Travaillé</option>
                </select>
            </center>   
       ,
                    <center>
                <select id="choixj2" name="choixj2" onchange="choixtype(document.f1.choixj2.options.selectedIndex, 2)">
                    <option value="0">&nbsp;</option>
                    <option value="1">Travaillé</option>
                </select>
            </center>   
       ,
   
    ----

                    &nbsp;:&nbsp;
       ,
                    &nbsp;:&nbsp;

       ,
   
    ----

                    &nbsp;:&nbsp;

       ,
                    &nbsp;:&nbsp;

       ,
   
    ----

                    <center></center>
       ,
   
    </form>

</html>