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 :

[DOM] Récup. d'index dans document.form.elements


Sujet :

JavaScript

  1. #21
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].childNodes[0].sourceIndex

  2. #22
    Membre du Club
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    le but final de récupérer les index ???
    Optimiser une boucle qui part de 0 sur document.form.elements alors que partir du 137ème suffit.

    --> Spacefrog, je comprends pas ton code

  3. #23
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    ... veux tu faire qqs test, tu verras comme je te l'ai dis même 600 ou 1000 élément la différence est plus qu'infime ...
    après a voir les test que tu effectues dessus
    si ça prend du temps => affiche une div pendant el traitement , et masque la après
    je pense que tu te prends la tete pour pas grand chose sur le coup

  4. #24
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    a priori même le premier element au niveau sourceIndex est égal si je ne m'abuse à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var firstElement=document.forms[0].sourceIndex+1
    c'est encore plus simple

  5. #25
    Membre du Club
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    ... veux tu faire qqs test, tu verras comme je te l'ai dis même 600 ou 1000 élément la différence est plus qu'infime ...
    après a voir les test que tu effectues dessus
    si ça prend du temps => affiche une div pendant el traitement , et masque la après
    je pense que tu te prends la tete pour pas grand chose sur le coup
    Désolé de me répéter mais c'est une appli pro de saisie en masse, donc les temps de réponse doivent être au poil... Même si je ne gagne que 2/10 de seconde, c'est toujours ça de pris !
    Les utilisateurs sont mécontents auj'hui car le navigateur perd environ (sur un PIV à 2Ghz) 3.5s dans un javascript qui boucle sur les 660 éléments de la page (j'ai tracé les temps de réponse).
    Je suis OK que 0.2s c'est peu au regard des 3.5s, mais c'est déjà ça de gagné si je peux le faire simplement en récupérant l'index de départ optimal plutôt que de partir de 0...
    Pour le reste j'ai d'autres pistes d'opti, mais ça me gave de ne pas trouver de solution à ce petit problème

    --> SpaceFrog, navré, mais peux-tu me donner un exemple concret avec le code que j'ai fourni plus haut ?

    En tout cas merci de votre aide les gars

  6. #26
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Citation Envoyé par Heretic Voir le message
    Désolé de me répéter mais c'est une appli pro de saisie en masse, donc les temps de réponse doivent être au poil... Même si je ne gagne que 2/10 de seconde, c'est toujours ça de pris !
    Les utilisateurs sont mécontents auj'hui car le navigateur perd environ (sur un PIV à 2Ghz) 3.5s dans un javascript qui boucle sur les 660 éléments de la page (j'ai tracé les temps de réponse).
    Je suis OK que 0.2s c'est peu au regard des 3.5s, mais c'est déjà ça de gagné si je peux le faire simplement en récupérant l'index de départ optimal plutôt que de partir de 0...
    Pour le reste j'ai d'autres pistes d'opti, mais ça me gave de ne pas trouver de solution à ce petit problème

    --> SpaceFrog, navré, mais peux-tu me donner un exemple concret avec le code que j'ai fourni plus haut ?

    En tout cas merci de votre aide les gars
    tu me laisse essayer ?
    envois ta page en pièce jointe avec ton code actuel ... on va relever le défit ^^

  7. #27
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    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
    <script type='text/javascript'>
    function foo(Obj){
    var firstOfForm=document.forms[0].sourceIndex+1;
    var FormCollection=document.forms[0].all
    alert("sourceIndex direct : "+Obj.sourceIndex +"\nSourceIndex relatif :" +FormCollection[Obj.sourceIndex-firstOfForm].sourceIndex);
    }
    </script>
    </head>
     
    <body>
    <form>
    <fieldset>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    </fieldset>
    <fieldset>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    <input type='text' onclick="foo(this)"/>
    </fieldset>
    </form>
     
     
     
    </body>
     
    </html>

  8. #28
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var tabIndex=new Array();
    formulaire=document.forms[0]; //le premier?
     
    for(i=0;i<formulaire.elements.length;i++){
    tabIndex[formulaire.elements[i].name]=i;
    }
     
    function getIndex(nomchamp){
     
    return tabIndex[nomchamp];
    }
    ...

  9. #29
    Membre du Club
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    tu me laisse essayer ?
    envois ta page en pièce jointe avec ton code actuel ... on va relever le défit ^^
    Je veux pas te faire pleurer, le code est une vrai cata :
    3 JSP imbriquées (expression language + java + HTML + javascript inside ), avec un javascript externalisé de 5000 lignes, très honnêtement j'aurais honte de te filer un tel code
    Puis tout ça hors contexte (MVC struts) ça te causera pas trop.

  10. #30
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    et mon usine à gaz elle ne te plait pas ... ???

    pourtant je recupère bine le sourceIndex par rapport au form

  11. #31
    Membre du Club
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    et mon usine à gaz elle ne te plait pas ... ???

    pourtant je recupère bine le sourceIndex par rapport au form
    J'ai pas encore essayé...
    Par contre j'ai transformé la table des objets control (document.form.elements) en table de string (juste le nom du control), ça booste bien et je récup l'index facilement du coup (indexOf()).
    Du coup, je me demande si ça va pas suffire à mon bonheur

    Merci à tous

  12. #32
    Membre du Club
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 102
    Points : 65
    Points
    65
    Par défaut

    Décidément quand ça veut pas : indexOf() opérationnel sur données Array seulement en Jscript >= 1.6... Et devinez quoi ?
    Bien vu on tourne en 1.5

    Bon c'est pas grave, je me démerde autrement !

    a+

  13. #33
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ma solution fonctionne ...

  14. #34
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    et moi je maintiens que tu t'embètes pour pas grand chose exemple ==>

    http://www.developpez.net/forums/d61...mance-sous-ie/

    puis test simple =>


    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <script type="text/javascript">
    	var rdv = new Array()
    	var Debut =null;
    	var Fin = null;
    	var test = 999999;
    	function initTableau(){
    		for(var i = 0; i < 1000000 ; i++){
    			rdv[i] = i;
    		}
    	}
    	function testTableau(){
    		Debut = new Date();
    		var len = rdv.length;
    		var i = 0;
     
    		while (i < len && rdv[i] != test)
    		{
    			++i;
    		} 
    		Fin = new Date();
    		alert(Fin-Debut+ "et i : " + i);
    	}
     
    	function testTableau2(){
    		Debut = new Date();
    		var len = rdv.length;
    		for(var i = 0 ; i < len;i++)
    		{
    			if(rdv[i] == test){
    				break;
    			}
    		} 
    		Fin = new Date();
    		alert(Fin-Debut+ "et i : " + i);
    	}
     
    	function testTableau3(){
    		Debut = new Date();
    		var len = rdv.length;
    		var i = 0;
    		while (i < len && rdv[i] != 500000)
    		{
    			++i;
    		} 
    		Fin = new Date();
    		alert(Fin-Debut+ "et i : " + i);
    	}
     
    	function testTableau4(){
    		Debut = new Date();
    		var len = rdv.length;
    		while (len)
    		{
    			len--
    		} 
    		Fin = new Date();
    		alert(Fin-Debut+ "et i : " + len);
    	}
    </script>
    </head>
     
    <body>
    <script type="text/javascript">
    	initTableau();
    	testTableau();
    	testTableau2();
    	testTableau3();
    	testTableau4();
     
    </script>
    </body>
    </html>
    regarde le nombre d'occurrence donc avec 600 ... même avec des traitements dessus tu serais gagnant , enfin moi j'dis ça je n'ai rien dit hein

  15. #35
    Membre du Club
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 102
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    ma solution fonctionne ...
    J'avoue honteusement que je ne l'ai pas encore essayée...
    Faut pas m'en vouloir hein, juste que comme c'est pour le taf, j'ai pas trop le temps de tout expérimenter, et j'ai trouvé une solution satisfaisante (balayage de la table juste pour récup des index, mais comme ça boucle à vide quasiment sans trt, ça booste !) pas trop coûteuse et qui me permet finalement de gagner 45/100s., ce qui peut paraître ridicule à l'échelle humaine, mais diablement important pour les utilisateurs finaux

    Mille merci pour votre aide

Discussions similaires

  1. Index dans objets form
    Par KaloOopS dans le forum C#
    Réponses: 9
    Dernier message: 08/11/2010, 12h47
  2. document forms elements
    Par lephotographe dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/09/2008, 11h05
  3. Error :document.Form.elements has no properties
    Par makohsarah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2007, 16h11
  4. [DOM] agir sur le DOM au changement d'une chaîne dans un FORM
    Par boteha dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/11/2005, 14h39

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