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 :

boucle for itération incohérrente


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 100
    Par défaut boucle for itération incohérrente
    Bonjour à tous,
    voilà j'ai un petit souci avec 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 filterSelect(select_id,listHeadingFree)
    {
    	// alert(listHeadingFree[0]);
    	// alert(listHeadingFree[(listHeadingFree.length-1)]);
    	var selectId = document.getElementById(select_id);
    	var init = selectId.options[0].value;
    	var val=0;
    	var valEnd=selectId.length;
    	// alert(val);
    	// alert(valEnd);
    	for(var i_filterSelect=val;i_filterSelect<valEnd;i_filterSelect++)
    	{
    		alert(i_filterSelect);
    		if(listHeadingFree.in_array(selectId.options[i_filterSelect].value) == false)
    		{
    			selectId.remove(i_filterSelect);
    		}
    	}
    	alert(i_filterSelect);
    }
    Cette fonction permet de filtrer dans un select si on coche une checkbox

    Mon problème est qu'il ne passe par toutes les options mon premier alert(i_filterSelect) va de 0 à 48 alors que le alert(valEnd) donne 93
    Donc ma boucle for est équivalente à :
    for(var i_filterSelect=0;i_filterSelect<93;i_filterSelect++)

    Je ne comprend pas pourquoi il saute des valeurs.

    voici code html généré:
    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
    110
    111
    <script type="text/javascript">
     
    			<!--
    var listHeadingFree = new Array();
    listHeadingFree[0] = '50';
    listHeadingFree[1] = '49';
    listHeadingFree[2] = '48';
    listHeadingFree[3] = '47';
     
    -->
     
    			</script>
    <td><input type='submit' value='Valider' name='valid' /></td>
    <td colspan=2>Sélectionner les id entre <input type='text' id='start_id' onchange="setStartEndId();" /> et 
    <input type='text' id='end_id' onchange="setStartEndId();" />
     | Filtrer les questions déjà dans une rubrique 
    <input id='checkbox_filter' type='checkbox' name='checkbox_filter' onClick="filterSelect('select_id',listHeadingFree);" /></td>
    <td colspan=3><select id='select_id' name='listAns[]' multiple size='93'>
    <option value='139'>139 - Phaeton: Quel est le prix du Pack Premium?</option>
    <option value='138'>138 - Phaeton: Quelle jante n'est pas disponible en option?</option>
    <option value='137'>137 - Quelle est la puissance du système 'Dynaudio Temptation'</option>
    <option value='136'>136 - Phaeton: Quelle option ne fait pas partie du Pack Business?</option>
    <option value='135'>135 - Phaeton: Le cuir Vienna classic Style est disponible en option sur</option>
    <option value='134'>134 - Phaeton: Quel est le prix du système de navigation RNS810 ?</option>
    <option value='133'>133 - Phaeton: Quelles motorisations sont disponibles en version 4 places</option>
    <option value='132'>132 - Quelle est la différence de longueur entre la Phaeton empattement court et long</option>
    <option value='131'>131 - Quel est le volume de coffre de la Phaeton</option>
    <option value='130'>130 - Quelles jantes en Volkswagen Exclusive sont disponibles en Passat CC</option>
    <option value='129'>129 - Le Park Assist avec caméra de recul peut-être combiné en Passat CC avec</option>
    <option value='128'>128 - Quels inserts sont disponibles en option en Passat CC</option>
    <option value='127'>127 - Quel équipement de sécurité n'est pas de série en Passat CC?</option>
    <option value='126'>126 - Les sièges climatisés ne sont pas combinable avec</option>
    <option value='125'>125 - Quel est le prix de l'option phares Bi-Xénon en Passat CC?</option>
    <option value='124'>124 - Quelle est la boîte de vitesses disponible en Passat CC 1,8 TSI 160 cv?</option>
    <option value='123'>123 - Que comporte le Pack Sport en Passat CC?</option>
    <option value='122'>122 - Que coute la peinture métallisée en Passat CC?</option>
    <option value='121'>121 - Qu'est ce qui ne fait pas partie de l'option Sièges en Alcantara en Passat CC?</option>
    <option value='120'>120 - Quelle option n'exclue pas le Pack 5 places en Passat CC?</option>
    <option value='119'>119 - Quel(s) équipement(s) ne fait/font pas partie du Pack R-line en Passat CC</option>
    <option value='118'>118 - Quel est le prix du Pack Business en Passat CC</option>
    <option value='117'>117 - Quelle est la longueur de la Passat CC?</option>
    <option value='116'>116 - Quelle est la boîte de vitesses disponible en Passat CC 2,0l 170 CV?</option>
    <option value='115'>115 - Que comprend le système Dynaudio 'Confidence' en Touareg?</option>
    <option value='114'>114 - Que contient le 'Pack Fonctionnel1' en Touareg?</option>
    <option value='113'>113 - Quelle option fourni en Touareg également un réservoir de carburant de 100l?</option>
    <option value='112'>112 - Quel est la déductibilité fiscale pour le Touareg TDI 3,0l 240CV 4Motion?</option>
    <option value='111'>111 - Quelle est le moteur à combustion sur le Touareg Hybride?</option>
    <option value='110'>110 - Quel est en Touareg le volume de coffre avec banquette relevée?</option>
    <option value='109'>109 - Le hayon à ouverture/fermeture électrique en Touareg est ,,,</option>
    <option value='108'>108 - Le railing de toit en Touareg est ,,,</option>
    <option value='107'>107 - En Touareg, les sièges chauffants à l'avant sont ,,,</option>
    <option value='106'>106 - Quelles jantes sont de série sur le Touareg V6 FSI et le V6 TDI?</option>
    <option value='105'>105 - Quelle est la masse tractable (remorque freinée) du Touareg?</option>
    <option value='104'>104 - Le système Stop/Start avec récupération d'énergie est de série en Touareg sur ,,,</option>
    <option value='103'>103 - Quelle est le prix d'une peinture métalisée en Touareg?</option>
    <option value='102'>102 - Quel revêtement de siège habille le Touareg en V6 de série?</option>
    <option value='101'>101 - Quelle est la teinte extérieure exclusivement disponible en Touareg Hybride?</option>
    <option value='100'>100 - Le chauffage stationnaire avec commande à distance en Tiguan n'est pas disponible en ,,,</option>
    <option value='99'>99 - Le réglage lombaire pour les sièges avants en Tiguan sont ,,,</option>
    <option value='98'>98 - Quels éléments de sécurité retrouve-t-on de série sur toutes les versions du Tiguan?</option>
    <option value='97'>97 - Le toit ouvrant panoramique en Tiguan est incompatible avec ,,,</option>
    <option value='96'>96 - Le régulateur de vitesse en Tiguan est ,,,</option>
    <option value='95'>95 - Le chargeur pour 6 CD logé dans l'accoudoir central avant en Tiguan est ,,,</option>
    <option value='94'>94 - Les airbags latéraux arrières en Tiguan sont de série sur ,,,</option>
    <option value='93'>93 - Quel est le couple maximum d'un Tiguan TDI 2,0l 110CV?</option>
    <option value='92'>92 - Quelles motorisations en Tiguan émettent moins de 140 g/km CO2?</option>
    <option value='91'>91 - La boite DSG-7 4motion est disponible en Tiguan ,,,</option>
    <option value='90'>90 - Quelle(s) version(s) du Tiguan possède(nt) des vitres arrières assombries à 65%?</option>
    <option value='89'>89 - Quel est en Tiguan le volume de coffre banquette relevée?</option>
    <option value='88'>88 - Quelle est la masse tractable (remorque freinée) du Tiguan Track & Field TDI?</option>
    <option value='87'>87 - Quel est l'angle d'attaque de la version Track & Field en Tiguan?</option>
    <option value='86'>86 - L'attache-remorque escamotable en Tiguan est ,,,</option>
    <option value='85'>85 - Quelle est la capacité de lecture du slot SD sur un RNS 510?</option>
    <option value='84'>84 - Quelle est la taille de pneus sur une Scirocco TSI 1,4l 122CV?</option>
    <option value='83'>83 - Que comprend le pack Technology en Scirocco?</option>
    <option value='82'>82 - En Scirocco, la radio RCD310 est de série sur ,,,</option>
    <option value='81'>81 - En Scirocco, quelles jantes sont de série sur la TSI 2,0l 210CV ?</option>
    <option value='80'>80 - De combien la suspension sur Scirocco 'R' est-elle rabaissée?</option>
    <option value='79'>79 - Quel est la déductibilité fiscale pour le moteur CRTDI 2,0l 170CV 6V en Scirocco?</option>
    <option value='78'>78 - Quel est le rejet de CO2 du moteur CRTDI 2,0l 140CV DSG-6 de la Scirocco?</option>
    <option value='77'>77 - Les commandes DSG au volant sont de série en Scirocco sur ,,,</option>
    <option value='76'>76 - Le 'DCC' (Dynamic Chassis Control) est un dispositif de régulation de ,,,</option>
    <option value='75'>75 - La direction assistée électromécanique asservie à la vitesse en Scirocco est de série sur ,,,</option>
    <option value='74'>74 - Quelle Scirocco est equipée d'un ordinateur de bord plus de série?</option>
    <option value='73'>73 - Quel revêtement de siège habille la Scirocco 'R' de série?</option>
    <option value='72'>72 - Quelle Scirocco est equipée d'appliques décoratives 'Silver Lane'?</option>
    <option value='71'>71 - Quelle Scirocco est equipée d'une roue de réserve temporaire (acier)?</option>
    <option value='70'>70 - Quelles sont les dimensions de pneu de série en CrossPolo?</option>
    <option value='69'>69 - La CrossPolo est basé sur quelle version?</option>
    <option value='68'>68 - Quel coloris n'est pas disponible en CrossPolo</option>
    <option value='67'>67 - Question 4</option>
    <option value='66'>66 - Sur quelle motorisation de la Polo la suspension sport n'est pas disponible?</option>
    <option value='65'>65 - Quelle version de la Polo n'a pas d'attache remorque amovible disponible?</option>
    <option value='64'>64 - Sur quelle version de la Polo il n'y a pas de filtre à particules?</option>
    <option value='63'>63 - Quelles versions de la Polo ont le spoiler aérodynamique à l'avant et à l'arrière? </option>
    <option value='62'>62 - L'Easy-Entry est de série sur la version de la Polo?</option>
    <option value='61'>61 - Quel est le tissu de série en Polo Comfortline?</option>
    <option value='60'>60 - Sur quelle version de la Polo les phares aux Xenon ne sont pas disponibles?</option>
    <option value='59'>59 - Laquelles des ces options n'est pas de série en Polo Highline?</option>
    <option value='58'>58 - Laquelles de ces options est de série en Polo Trendline?</option>
    <option value='57'>57 - Que comporte le module Comfort de conduite en Polo Trendline?</option>
    <option value='56'>56 - Quelle est l'émission CO2 de la Polo 1.4l TSI 105 CV 6V?</option>
    <option value='55'>55 - L'Isofix en Fox</option>
    <option value='54'>54 - Quel type de direction assistée à la Fox?</option>
    <option value='53'>53 - De quelle façon le volant de la Fox est-il réglable de série?</option>
    <option value='52'>52 - De quel matériel est la carrosserie de la Fox?</option>
    <option value='51'>51 - De quel matériel est fabriqué l'intérieur du toit de la Fox?</option>
    <option value='50'>50 - Où est construite la Fox?</option>
    <option value='49'>49 - Quelle est la dimension des  pneus de série en Fox?</option>
    <option value='48'>48 - Quel équipement manque du module Comfort 2? Verrouillage central avec commande à distance + vitres électriques à l'avant avec réglage comfort + lampes de lecture à l'avant + alarm volumétrique et périmétrique</option>
    <option value='47'>47 - Quelle série comporte tous les équipements du module Comfort sur la Fox?</option></select></td>
    Merci d'avance de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 100
    Par défaut
    L'idée "une bonne nuit de sommeil porte conseil" n'est pas folle.
    J'ai compris ce qui n'allait pas dans ma fonction de filtrage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function filterSelect(select_id,listHeadingFree,checkbox_filter)
    {
    	var selectId = document.getElementById(select_id);
    	var checkbox = document.getElementById(checkbox_filter);
    	var lastId = selectId.length;
    	for(var iter=0;iter<lastId;iter++)
    	{
    		if(listHeadingFree.in_array(selectId.options[0].value)==false)
    		{
    			selectId.remove(0);
    		}
    	}
    	checkbox.disabled = true;
    }
    Il allait à chaque fois chercher l'index suivant alors que le remove les décalait.
    Il fallait que je retire autant de fois la première option qu'il trouve

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    en effet dans lmes boucles de suppression il faut soit:
    • boucler sur le premier element
    • commencer la boucle par le dernier


    si l'on supprime tous les elements on peut utiliser un while ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/06/2012, 08h54
  2. Passer à l'itération suivante d'une boucle for
    Par kariboubou dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/05/2011, 14h23
  3. boucle for qui remplit deux cellules à chaque itération
    Par free_dom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/04/2011, 16h53
  4. Réponses: 8
    Dernier message: 01/06/2010, 11h43
  5. [Débutant] Changez l'indice d'itération dans une boucle for
    Par lekev62 dans le forum MATLAB
    Réponses: 5
    Dernier message: 18/11/2009, 14h16

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