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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut [DOM] Récup. d'index dans document.form.elements
    Bonjour,
    Après recherche infructueuse, je me demande s'il existe une fonction qui me permettrait de récupérer (directement sans balayer toute la table) l'index d'un control dans la table document.form.elements à partir de son id ou name !
    Je suis en train d'essayer d'optimiser un javascript monstrueux qui balaye une JSP (non moins monstrueuse) contenant 660 controls
    Bon c'est une page extraite d'une appli pro, contenant une liste de 8 occurrences de 60 colonnes, ce qui explique en partie la taille de la page.
    Merci de votre aide.

  2. #2
    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
    non.
    Quel est le but de la recupération de l'index ?
    ne peux tu pas t'en passer en passant this en paramètre ?
    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 !

  3. #3
    Membre confirmé
    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
    Par défaut
    La récup d'index me permettrait de commençait le balayage des controls (ce balayage sert à locker ou non les champs du bas de la page en fonction d'un paramétrage) à partir de celui qui m'intéresse. C'est environ le 120ème de la page, mais susceptible d'évoluer dans le temps, je ne peux donc pas me contenter d'une valeur en dur... L'idée c'est qu'au lieu de lancer une boucle à partir de l'index 0, je la démarre à partir du champ qui m'intéresse, ce sera déjà ça de gagné en temps.
    Je vois pas bien le coup du "this" ?!
    a+

  4. #4
    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
    Par défaut
    document.getElementById("tonid")

  5. #5
    Membre confirmé
    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
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    document.getElementById("tonid")
    Hum, désolé mais je ne pense pas pouvoir récupérer l'index dans document.form.elements avec cette fonction... Si c'est possible, merci de me dire comment

  6. #6
    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
    sous IE ce serait possible avec l'id porpre attribué par IE dans son DOM ...

    sinon il faudrait un nommage ou une identification rationnels des elements ...

    sinon si tes elements ont tous le même name c'est jouable

    on peut voir un bout du html avec quelques éléments ?
    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 !

  7. #7
    Membre confirmé
    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
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    sous IE ce serait possible avec l'id porpre attribué par IE dans son DOM ...
    ca m'intéresse car l'appli n'est prévue que pour IE (oui je sais...). tu peux détailler un peu la manip, je ne connais pas trop ce concept de DOM RE-

    --> le_chomeur : chapeau parce que dans mon cas, pour 660 éléments le temps est d'environ 3.5 secondes (sur un P4 2Ghz avec 2Go de RAM) !!! Ceci dit, ce n'est pas une simple boucle, il y a pas mal de code dedans...

  8. #8
    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
    Par défaut
    montre nous ton code , on pourra surement l'améliorer
    petit conseil => stock tes objets dans un array plutôt que de les parcourirs gain de temps => x10

  9. #9
    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
    essaye avec sourceIndex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' onclick="alert(this.sourceIndex)" />
    à à l'air de donner un bon resultat sous IE
    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 !

  10. #10
    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
    Par défaut
    hups autant pour moi effectivement ... mal compris la question je pensais que tu souhaitais juste accéder a ton élément.

    de plus pour locker 600 éléments , j'avais fait la démo d'un test avec boucle optimisé sur 10000 élements , j'arrivais a a peine 500ms ( donc 0,5 secondes ... )
    je pense que le balayage est envisageable dans ton cas ...

  11. #11
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getIndex(nomchamp,formulaire){
    index=0;
    for(i=0;i<formulaire.elements.length;i++){
    if(formulaire.elements[i].name==nomchamp)
    {index=i;
    }
    }
    return index;
    }
    un truc de ce genre?

  12. #12
    Membre confirmé
    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
    Par défaut
    Merci à tous
    SpaceFrog, j'essaie ton truc après le repas, ça m'a l'air pas mal du tout
    Matthieu2000 et le_chomeur, merci mais l'idée est d'avoir un ordre propre qui ne nécessite pas de balayer la boucle, sinon l'opti sera minime

  13. #13
    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
    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>
    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 !

  14. #14
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    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];
    }
    ...

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