Des variable dynamique..

Résolu
rastasponch Messages postés 27 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 19 décembre 2009 - 22 sept. 2007 à 11:44
rastasponch Messages postés 27 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 19 décembre 2009 - 23 sept. 2007 à 23:24
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 sept. 2007 à 12:32
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 sept. 2007 à 12:38
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 sept. 2007 à 09:48
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 sept. 2007 à 13:05
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ibtissam33 Messages postés 3 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 20 août 2008
22 sept. 2007 à 13:48
bonjour
quoi DHTML
quoi SHTML
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 sept. 2007 à 14:12
<hr />

       quoi quoi                                          

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

                En général, c'est absurde de généraliser.
0
rastasponch Messages postés 27 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 19 décembre 2009
22 sept. 2007 à 21:24
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.
0
rastasponch Messages postés 27 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 19 décembre 2009
23 sept. 2007 à 23:24
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>
0
Rejoignez-nous