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 :

Tester si à chaque ligne dans un tableau si la valeur qu'on veut ajouter n'exite pas


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    Par défaut Tester si à chaque ligne dans un tableau si la valeur qu'on veut ajouter n'exite pas
    bonjour,j'ai un petit problème:
    j'ai deux multiselects,je choisis une valeur dans chaque,et en cliquant sur un bouton ajouter,J'ai une table qui s'affiche en mettant:
    numero Type Genre Statut
    1 chien8 Masulin5 on
    2 chien5 Masulin5 on
    3 chien9 Masulin4 on
    4 chien1 Masulin2 on

    Je voudrais avant d'ajouter une ligne dans mon tableau,vérifier pour chaque ligne du tableau si le (Type et genre) q'on veut insérer n'a pas été déjà insérer
    ex:ne plus pouvoir ajouter chien5/Masulin5 car il existe deja dans ma table.
    j'insére mes lignes en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var ligne = tableau.insertRow(-1);
                                              Cell = ligne.insertCell(0);
                                              Cell.innerHTML = ligne.rowIndex;
                                              Cell = ligne.insertCell(1);
                                              Cell.innerHTML = obj1;
                                              Cell = ligne.insertCell(2);
                                              Cell.innerHTML =elements.options[i].text;


    je crée ensuite une fonction
    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
    function isElementInTab(){
                              //Recomptage des lignes...
                                          var tableau = document.getElementById("matable");
                                          var trs = tableau.rows;
                                          var n = trs.length;
                                         // Creation du tableau
                                              var grille = new Array();
                                        // Creation des lignes les unes après les autres
                                                for(var k=0; k<n; k++){
                                                   grille[k] = new Array();
                                                }
                                        // Je parcours les lignes ensuite les cellules
                                           for(var k=0; k<n; k++){
                                              for(var j=1; j<2; j++){
                                                 if(grille[k][1] != obj1 && grille[k][2]!=obj2){
                                                   ajouterDansMaTable();
                                                  }
                                               }
                                            }
    }
    Merci de m'aider..

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Gère un tableau javascript en parallèle ce sera plus simple.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    Par défaut
    Oui c'est ce que j'ai essayé de faire dans ma fonction:
    cette boucle me permet de parcourir toutes les lignes de mon tableau.Et tester pour chaque ligne la valeur de la colonne1 et de la colonne2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for(var k=0; k<n; k++){
                     monTableau =  new Array();
                     monTableau[k] = new Array();
                     if(monTableau[k][0]!= val1 &&monTableau[k][1]!=obj2){[1]!=val2){
                            alert("je dois inserer");
                            //AjouterDansTable();
                     }else{
                             alert("interdiction");
                     }
      }
    ma fonction ne marche pas à chaque fois elle me met "je dois insérer" meme si les 2 valeurs existent déjà sur la table.
    Aidez moi svp!!

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Tu initialises les tableaux dans la boucle, et tu ne les peuple jamais! Il est donc normal qu'un tableau vide soit différent d'une valeur.

    L'erreur est faite dans les deux versions du script.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 141
    Points : 53
    Points
    53
    Par défaut
    J'ai déclaré monTableau = new Array(); en variable globale et j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(var k=0; k<n; k++){
                     if(monTableau[k][0]!= val1 &&monTableau[k][1]!=obj2){[1]!=val2){
                            alert("je dois inserer");
                            //AjouterDansTable();
                     }else{
                             alert("interdiction");
                     }
      }
    erreur:monTableau[k] undefined..
    Je ne m'en sors pas!!!Aidez-moi

  6. #6
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    un code qui fonctionne :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <!doctype html>
    <html lang="fr">
    <head>
    <meta charset="utf-8">
    <title>test du contenu de tableau html</title>
      <style type="text/css">
      * {margin:0;padding:0;}
      body {margin:10px;background:#000;color:#ddd;font:bold 1em Helvetica, Arial, sans-serif;}
      h1 {margin:0 0 20px 0;}
      div {margin:0 auto;width:300px;}
      table {width:300px;border-style:none;background:#333;}
      td {border:solid 2px #333;background:#666;text-align:center;}
      select {width:50px;}
      button {border:solid 2px #333;background:#666;color:#ddd;font-weight:bold;}
      button:hover {background:#ddd;color:#666;}
      p {margin:20px 0 0 0;}
      </style>
    </head>
    <body>
      <h1>Test du contenu de tableau html</h1>
      <div>
        <table id="t">
          <tr><td>a</td><td>d</td></tr>
          <tr><td>b</td><td>e</td></tr>
          <tr><td>c</td><td>f</td></tr>
        </table>
        <form id="f" method="post" action="succes.html">
          <p>
            <label for="s">choisir une lettre</label>
            <select id="s" name="s">
              <option value=""></option>
              <option value="a">a</option>
              <option value="b">b</option>
              <option value="c">c</option>
              <option value="d">d</option>
              <option value="e">e</option>
              <option value="f">f</option>
              <option value="g">g</option>
              <option value="h">h</option>
              <option value="i">i</option>
              <option value="j">j</option>
              <option value="k">k</option>
            </select>
            <button id="b" type="button" value="soumettre">soumettre</button>
          </p>
        </form>
        <p id="p">quel sera le résultat?</p>
      </div>
      <script type="text/javascript">
      var FC = {
        Evenement: {
          evenements: [],
          ajouter: function(elm, evt, fn) {
            var fni = function(e) {                             // prévient le comportement par défaut
              if (fn(e)===false) {                              // false explicitement car peut être undefined en cas de délégation d'évènement
                if (e.preventDefault) { e.preventDefault(); }
                else { e.returnValue = false; }
              }
            };
            if (document.addEventListener) { elm.addEventListener(evt, fni, false); }
            else if (document.attachEvent) { elm.attachEvent("on" + evt, fni); }
            FC.Evenement.evenements.push([elm, evt, fni]);
          },
          supprimer: function(elm, evt, fn) {
            var evts = FC.Evenement.evenements;
            for (var i=evts.length-1; i>=0; i--) {
              if (evts[i][0]===elm && evts[i][1]===evt) {
                if (document.removeEventListener) { elm.removeEventListener(evts[i][1], evts[i][2], false); } 
                else if (document.detachEvent) { elm.detachEvent("on" + evts[i][1], evts[i][2]); }
                FC.Evenement.evenements.splice(i,1);
              }
            }
          }
        }
      }
     
      var a = [],
        rows = document.getElementById("t").rows,
        rowsLength = rows.length,
        cellsLength = rows[0].cells.length,
        p = document.getElementById("p");
     
      for (var i=0;i<rowsLength;i++) {
        for (var j=0;j<cellsLength;j++) {
          a.push(rows[i].cells[j].firstChild.nodeValue);
        }
      }
     
      FC.Evenement.ajouter(document.getElementById("b"), "click", function(e) {
        var sel = document.getElementById("s"),
          v = sel.options[sel.selectedIndex].value,
          aLength = a.length,
          str = "";
     
        for (var i=0;i<aLength;i++) {
          if (a[i]===v) {
            str = '"'+ v + '" a été trouvé dans le tableau.';
            break;
          }
        }
        if (str==="") {
          str = "rien à signaler.";
        }
     
        p.firstChild.nodeValue = str;
      });
      </script>
    </body>
    </html>
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/03/2014, 23h31
  2. Réponses: 2
    Dernier message: 20/10/2008, 09h24
  3. Listbox dans chaques lignes d'un tableau
    Par benjamin-mermoz dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/06/2008, 15h39
  4. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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