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 :

Persistance d'objets dans le code


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut Persistance d'objets dans le code
    Bonjour à tous.

    Je débarque un peu dans l'Univers JSP/JS (oui je sais les 2 sont différents, m'enfin l'un n'empêche pas l'autre) et je pense que je vais poser une question con... et je m'en excuse.

    Au début de ma page JSP je crée une variable JS (avec un out.println("var dataSources = new Array();"; ) que je rempli de suite après, et un peu plus bas dans le code j'ai une fonction JS dans laquelle je voudrais utiliser le contenu de mon tableau. Manque de bol il est plus accessible, genre l'objet a disparu.

    Est-ce que quelqu'un saurait m'éclairer le chemin de la raison (dit comme ça...).

    Voici le code dont je parle (tiré directement du source HTML de ma page affichée pour éviter les mauvaises surprises)
    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
    <html>
    <head>
    <title>Titre</title>
     
     
     
     
    <script language="JavaScript">
        <!--
     
     
        window.parent.nav.location.href = window.parent.nav.location;
     
        //--></script>
    <script language="JavaScript"><!--
     
    parent.location.href == self.location.href ? top.window.location.href = '../admin_tools.htm' : "";
    //--></script>
     
    <script><!--
        var dataSources = new Array();
        var options = new Array();    
     
    dataSources[0] = 401;
    options[0] = null;
    var dataType401 = new Array();
    dataType401[0] = 105;
    dataType401[1] = 104;
    dataType401[2] = 103;
    dataType401[3] = 102;
    dataType401[4] = 101;
    dataType401[5] = 10621;
    dataType401[6] = 10643;
    dataType401[7] = 106;
    dataSources[1] = 462;
    options[1] = null;
    ...
    dataTypeIds[15] = '10481';
    var selectedDataType = '';
    var selectedDataType1 = '';
     
        //-->--></script>
     
    <script language="JavaScript">
    function DataSourceSelectionChange(obj){
        var the_select = obj;
        var flag = false;
        var selectedDS = new Array();
        var dataTypeToDisplay = new Array();
        var selectedDataTypeIndex = new Array();
        var count = 0;
        var options =new String();
     
        alert("Au moins on y passe..."+the_select.value);
     
        if(the_select.value == 0){    //The first element of the drop down list has been selected. No data type to display
            alert("Case 1");
            this.document.forms[0].dataType.length = 0;
            var doc = obj.ownerDocument;
            var opt = doc.createElement('OPTION');
            opt.value = '0';
            opt.text = 'Please select a Data Source';
            this.document.forms[0].dataType.options.add(opt, 0);
            obj.options[0].selected = true;
        }else{    //A "valid" data source has been selected. Retrieve and display the corresponding data type list
            var arr = 'dataType'+the_select.value;
             var dsID = new String(the_select.value);
     
            alert('Case 4');
            var test = new Array("13", "8", "bonjour");
            alert('Case 3 -> '+test[0]+' DS[0] '+dataSources[0]);
     
            var option = new String();
            for(var dsLength=0; dsLength<dataSources.length; dsLength++){
                alert('dsID : '+dsID+' dataSources['+dsLength+'] => '+ dataSources[dsLength]);
                if(dataSources[dsLength] != null){
                    if(dataSources[dsLength] == dsID){
                        option = options[dsLength];
                        break;
                    }
                }
            }       
     
            alert('Case 2 -> '+arr+' - '+option);
    Outre le fait que je ne comprend pas la ligne window.parent.nav.location.href = window.parent.nav.location; (je n'ai pas cherché sa signification, mais je doute qu'elle soit à l'origine de mon soucis...) mon problème viens du fait que sur mon alert('Case 3...') si j'ai le dataSources[0] je n'ai pas l'alert. Il me faut supprimer ce code pour avoir l'affichage de mon alert.... auquel cas je m'arrête au niveau de la boucle. Probablement quand je cherche à récupérer le nombre d'élément de mon dataSources. Quelqu'un voit-il mon problème ? Serait-ce du au fait le script ou je déclare dataSources n'est pas explicitement JavaScript ? -si je le change et que j'ajoute l'attribut JavaScript... plus rien ne s'affiche.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    dans ton script lors de la déclaration de tes tableaux tu as ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        var options = new Array();
    puis dans ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function DataSourceSelectionChange(obj)
    {
        var options =new String();
    ......
    Puis plus bas dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        var option = new String();
    
        for(var dsLength=0; dsLength<dataSources.length; dsLength++)
    {.......
    Déclare tes variables au début de la fonction. Evite les déclarations au milieu du code !

    Donne à tes variables des noms plus explicites, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tabOptions = new Array();
    strOption = new String();

  3. #3
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Sincèrement, ce serait avec grand plaisir... si cela ne m'obligeait pas à une charge de travail énorme !
    En fait, je fais de la maintenance sur ce logiciel. Et outre le fait qu'il n'y a pas de commentaires, les variables n'ont pas toutes un nom très judicieux. Au fur et à mesure, j'essaie de les changer et de commenter un peu tout ça. Mais ça prend beaucoup de temps et n'était pas inclu dans mon scope initial.

    Qu'à cela ne tienne. Ma variable dataSources, je ne lui trouve qu'une seule déclaration et pourtant, c'est bien elle qui me bloque.

    Est-ce que quelqu'un y voit une raison ?

  4. #4
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Bon, j'ai modifié légèrement le code pour m'assurer de l'orgine du problème et en effet,
    je n'arrive pas à accéder à mon tableau dataSources. Normalement son premier élément vaut 401, et pourtant le code suivant s'arrête après le alert("5");

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            alert('Case 4');
            var length = 423;
            var test = new Array("13", "8", "bonjour");
            alert("5");
            var dsString = new String(dataSources[0]);
            alert('Case 3');

  5. #5
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Re,

    C'est dans quelle rubrique du forum qu'on achête les fouêts "spécial boulet" ?

    Je viens de perdre des heures pour une histoire de quote ! Comme quoi il n'y a pas que les cyclistes qui perdent leur temps dans les côtes... (désolé, mais c'est la décompression du Vendredi après-midi !)
    En fait, quand j'initialisé mon tableau d'options dans mon JSP, je n'avait pas mis de quote atour du contenu... texte !
    Résultat ça me faisait planter le truc bien plus bas.

    Quel dégoût !

    Enfin bref. Je suis bien désolé en tout cas de vous avoir fait perdre du temps pour une connerie aussi ridicule.
    Et merci (pour ce temps, justement).

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

Discussions similaires

  1. Accéder à l'objet 'session' dans le code du controleur
    Par chat_roux dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/12/2007, 20h37
  2. objets non utilisables dans le code
    Par thierry007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 10/10/2007, 15h34
  3. Réponses: 9
    Dernier message: 02/08/2007, 17h08
  4. persistance d'objets dans un String
    Par bitbis dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 24/06/2007, 21h08
  5. Accèder à un objet d'un FormX dans le code d'un unitY
    Par Akeon dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/04/2007, 09h20

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