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 :

Bug si trop de javascript ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut Bug si trop de javascript ?
    Bonjour à tous,

    La question peut semblée étrange mais je vous explique :

    J'ai deux listes (select multiple) contenant +- 150 lignes.
    Je permets de passer les éléments d'une liste à une autre.
    Lorsqu'un élément passe d'une liste à une autre, certaines choses sont générées encore en background.

    Tout fonctionne à merveille, seulement, si je déplace les 150 par exemple, ils sont bels et biens déplacés mais le bouton submit de mon formulaire ne fonctionne alors plus !

    C'est un simple bouton qui appelle une servlet java (<form action=".." ..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="submit" name="validation" value="valider"/>
    Pouvez-vous m'en dire plus ?

    Merci.

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    la fonction boule de cristal est en panne. Veuillez laisser un peu plus de code après le beep sonore...

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Comme dit Mathieu, il nous manque des éléments* pour en juger...

    Par contre, pour répondre à ton titre... dans le cas que tu décris, ne t'inquiete pas, aucune chance que 150 lignes dans un select soit considéré comme "trop de javascript"

    Montre-nous plus de code pour un meilleur diagnostic, ou bien un lien si c'est en ligne...


    * tiens ça me rappelle un vieux jeu cette phrase... (megalomania pour les connaisseurs )

  4. #4
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Voici ce qu'il se passe lorsque j'ajoute déplace des lignes :

    Appel de la fonction ajout qui détermine entre autre quelles sont les lignes consernées et les déplacent, ensuite appel de addOption qui est en fait, une liste multiple cachée.
    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
     
    function Ajouter(){ 	
     var NbEle = -1;  var moved = 0;	var TxtEle = ''; var valueEle='';
     var longu = document.all('lstSource').length;
            for(i = 0; i < longu; i++){
     	  if (document.all('lstSource' ).options[(i-moved)].selected)  {
                        NbEle = (i - moved); TxtEle = document.all('lstSource' ).options[(i - moved)].text; valueEle = document.all('lstSource' ).options[(i - moved)].value;
    	if (NbSource != 0 && NbEle != -1){     
                        addOption(document.all('lstSource' ).options[NbEle].value);   	       document.all('lstSource' ).options[NbEle] = null; 	                document.all('lstCible' ).options[NbCible] = new Option(TxtEle,valueEle);  
     if(document.all('userType').selectedIndex==0){  
    document.all('lstCible' ).options[NbCible].style.backgroundColor='#f4f6e3';} 
     if(document.all('userType').selectedIndex==1){  
    document.all('lstCible' ).options[NbCible].style.backgroundColor='#75c1d1';} 
     if(document.all('userType').selectedIndex==2){ 
     document.all('lstCible' ).options[NbCible].style.backgroundColor='#89d8b5';} 
     if(document.all('userType').selectedIndex==3){  
    document.all('lstCible' ).options[NbCible].style.backgroundColor='#33869c';}	  NbCible = NbCible + 1; 	  NbSource = NbSource - 1;     moved = moved +1;	} 	  } 	} 	 }
    Ensuite donc, appel de addZones
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function addOption(valeur){ 
     document.myForm.toUpdate.options[nbAjout]= new Option(valeur,valeur);document.myForm.toUpdate.options[nbAjout].selected='selected';addZones(valeur);nbAjout=nbAjout+1;
    }
    addZones:
    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
     
    function addZones(valeur){
      var elmt = document.myForm.zones; var myZones = '';
    for(var i=0; i< elmt.options.length; i++)	
    { 		
     if(elmt.options[i].selected == true)     	
     {			
         myZones += elmt.options[i].value; myZones += ':';	
     }
    }	
    document.myForm.toUpdateZones.options[nbAjout] 
          = new Option(myZones,myZones);
    document.myForm.toUpdateZones.options[nbAjout].selected='selected';var valDroit=document.all('userType').options[document.all('userType').selectedIndex].value;
    document.myForm.toUpdateRights.options[nbAjout] = new Option(valDroit,valDroit);	
    document.myForm.toUpdateRights.options[nbAjout].selected='selected';
    }
    Voilà le processus, avec ça, même sans sa boule de cristal madame irma pourrait s'en sortir

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Il y a déjà eu dans ce forum de très nombreux thread à propos de form qui ne fonctionnent plus après ajout "dynamique" d'inputs sans passer par le DOM.

    Ici, même pas la peine de parler de DOM, c'est vraisemblablement du code écrit pour IE uniquement, et qui date beaucoup...

    Le code javascript du site est-il trop volumineux dans ton projet pour envisager une réécriture complète sur des bases saines ? Si oui, je te conseille une recherche dans ce forum à partir des termes clefs, tu devrais faire une grosse récolte... ^^

    Citation Envoyé par libuma
    avec ça, même sans sa boule de cristal madame irma pourrait s'en sortir
    je ne connais pas cette développeuse appelée "irma", mais je connais un/une "libuma" qui va faire beaucoup de javascript dans les prochains jours/semaines...

  6. #6
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Effectivement, ça doit tourner sur IE et qui plus est, sur une vieille version d'IE !

    Sinon, base saine, un exemple concret de changement sain envisageable?


    Citation Envoyé par RomainVALERI Voir le message
    je ne connais pas cette développeuse appelée "irma", mais je connais un/une "libuma" qui va faire beaucoup de javascript dans les prochains jours/semaines...
    Quelle prédiction impressionnante !!

    Je n'ai pas de bol

    Merci pour tes réponses.

  7. #7
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Evite de lancer la même fontion 150 fois exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var eltSource=document.getElementById('lstSource' )

  8. #8
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Citation Envoyé par Matthieu2000 Voir le message
    Evite de lancer la même fontion 150 fois exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var eltSource=document.getElementById('lstSource' )
    tu veux dire afin d'éviter d'avoir un peu partout dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if (document.all('lstSource' ).options[(i-moved)].selected)  {
    mais plutôt..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(eltSource.options[(i-moved)].selected) {
    Si oui, je ne savais pas que ça prenait beaucoup moins de ressources de cette façon

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

Discussions similaires

  1. Bug colormap : trop de couleurs ?
    Par Vpoint dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/12/2011, 14h54
  2. comment vous résolvez des bugs sur du code javascript
    Par bigs3232 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/12/2010, 20h11
  3. Bug sur un morceau Javascript
    Par soledad_001 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 06/11/2009, 17h46
  4. Bug d'IE concernant le Javascript ?
    Par becks dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/06/2005, 14h35

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