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 :

modification de format? Un Int devient un String.


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Avatar de thanathz
    Inscrit en
    Mars 2002
    Messages
    147
    D�tails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Par d�faut modification de format? Un Int devient un String.
    J'ai plusieurs div nomm�s P0, P1, P2, ..., Pn

    j'essaye de modifier ma fonction javacript qui pour l'instant ne me retourne que 5 entit�s.
    l'actuelle est comme cela (elle fonctionne parfaitement):
    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
    function switchBest( layerName ) {
        if ( document.getElementById ) {
    		var player[1] = document.getElementById( 'P0' );
    		var player[2] = document.getElementById( 'P1' );
    		var player[3] = document.getElementById( 'P2' );
    		var player[4] = document.getElementById( 'P3' );
    		var player[5] = document.getElementById( 'P4' );
     
    		player[1].style.display = 'none';
    		player[2].style.display = 'none';
    		player[3].style.display = 'none';
    		player[4].style.display = 'none';
    		player[5].style.display = 'none';
     
    		switch(layerName) {
    			case "P0":
      				player[1].style.display = 'block';
      				break;
    			case "P1":
    			  	player[2].style.display = 'block';
      				break;
    			case "P2":
      				player[3].style.display = 'block';
      				break;
    			case "P3":
      				player[4].style.display = 'block';
      				break;
    			case "P4":
      				player[5].style.display = 'block';
      				break;
    			default:
      				break;
            	}
          	}
        }
    switchBest('P0');
    Maintenant je veux pouvoir rendre cette fonction dynamique c'est � dire totalement transparente si j'utilise 2 �l�ments ou 500.

    J'ai donc cr�e cette fonction. Ajoutant un param�tre qui me donne le nombre maximum d'�lements que j'aurais (utile pour l'initialisation de mon tableau).
    j'ai donc �crit cette 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
     
    function switchBest( layerName, maxValue ){
        var player = new Array(maxValue);
        if ( document.getElementById ) {
             var i=1;
             while(i<maxValue){
                   player[i]=document.getElementById ( ('P' + i) ); 
                   player[i++].style.display = 'none'; // on cache tous les elements
                   }
     
            player[layerName.replace(P, "")].style.display = 'block';
             }
        }
    switchBest('P0');
    Tous mes elements sont bien cach�s, P0 est affich�. mais j'ai ce message qui apparait � chaque click et Pn ne s'affiche pas,
    erreur: player[i++] has no properties
    Donc quand ont fait une concatenation comme 'P' + i j'ai l'impression que i est ensuite trait� comme un string.... ai-je raison?
    Et si c'est le cas, je fais comment pour �viter �a?

  2. #2
    Membre confirm� Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par d�faut
    A priori, �a devrait �tre bon. Tu peux toujours 'caster' d'avantage de cette fa�on

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    player[i]=document.getElementById ('P' + i.toString());
    mais je pense pas que �a change grand chose. L'erreur vient d'ailleurs peut �tre.

    Tu es sur que les objets Pn existent ? comment les g�n�res-tu ?

  3. #3
    Membre exp�riment� Avatar de hunter
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 208
    Par d�faut
    heu

    il me semble pas que �a puisse pas fonctionner
    player[i++] il est pas initialis� ...
    player[i].style.display = 'none';
    �a va fonctionn�
    et tu fais i++ a la fin

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    while(i<maxValue){
                   player[i]=document.getElementById ( ('P' + i) );
                   player[i].style.display = 'none'; // on cache tous les elements
                   i++; 
                   }
    cherche un peut la prochaine fois ...

  4. #4
    Membre �m�rite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    D�tails du profil
    Informations personnelles :
    �ge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par d�faut
    Le probl�pme vient du cast automatique du javascript :
    'p' + i => donne un entier je crois et non 'p2' par exemple.
    Instrumente ton code comme suit pour savoir:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(i<maxValue){
    name =  ('P' + i);
    player[i]=document.getElementById ( name );
       if (!player[i])                
           alert("Null object :" + name);
       else
           player[i++].style.display = 'none'; // on cache tous les elements
                  }
    Pour hunter : Non, il utilise une post-incr�mentation, donc i est incr�ment� apr�s ex�cution de l'instruction courante.
    Citation Envoy� par hunter
    heu

    il me semble pas que �a puisse pas fonctionner
    player[i++] il est pas initialis� ...
    player[i].style.display = 'none';
    �a va fonctionn�
    et tu fais i++ a la fin

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    while(i<maxValue){
                   player[i]=document.getElementById ( ('P' + i) );
                   player[i].style.display = 'none'; // on cache tous les elements
                   i++; 
                   }
    cherche un peut la prochaine fois ...

  5. #5
    Membre confirm� Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par d�faut
    Citation Envoy� par hunter
    heu

    il me semble pas que �a puisse pas fonctionner
    player[i++] il est pas initialis� ...
    player[i].style.display = 'none';
    �a va fonctionn�
    et tu fais i++ a la fin

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    while(i<maxValue){
                   player[i]=document.getElementById ( ('P' + i) );
                   player[i].style.display = 'none'; // on cache tous les elements
                   i++; 
                   }
    cherche un peut la prochaine fois ...
    C'est plutot toi qui devrait te document avant.

    player[i++] est une syntaxe correcte (post incr�mentation comme le dit Caine).

  6. #6
    Membre exp�riment� Avatar de hunter
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 208
    Par d�faut
    a dsl mais je pensais vu l'erreur que �a pouvais �tre �a ...

  7. #7
    Membre �prouv�
    Avatar de thanathz
    Inscrit en
    Mars 2002
    Messages
    147
    D�tails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Par d�faut
    merci du coup de main. Bon en effet, ce n'est pas un probl�me de Cast, mais plut�t de moi qui ai encore des probl�mes avec Javascript...

    C'est surtout que j'ai pas vu une betise plus grosse que moi!

    J'avais un probl�me avec mon appel et le nom de mes div (j'allais de 1 � 5 alors que mes div �taient num�rot�s de P0 � P4...)

    Enfin il y en avait une deuxi�me au niveau de player[layerName.replace(P, "")].style.display = 'block'; ou P doit �tre 'P'...

    j'ai fait les modifs qui vont bien en ajoutant le test de Caine. et �a donne �a:


    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
     
    function switchBest( layerName, maxValue ){
        var divName;
        var player = new Array(maxValue);
        if ( document.getElementById ) {
             var i=0;
             while(i<maxValue){
                    divID=('P' + i);
                   player[i]=document.getElementById ( divID );
                   if(!player[i]) alert("null object: " + divID);
                   else player[].style.display = 'none'; // on cache tous les elements
                   i++;
                   }
     
            player[layerName.replace('P', "")].style.display = 'block';
             }
        }
    switchBest('P0', 2);
    il suffit d'avoir des div ou tout autre objet avec un format comme suit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <div id="P0">bla blablla</div><div id="P1">P1 était caché!</div>
    et ailleurs des liens pour montrer et cacher:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    <a href="javascript:switchBest('P0', '2');">cacher</a>
    <a href="javascript:switchBest('P1', '2');">montrer</a>
    pour une application sur la page d'acceuil de mon site meilleur perf est g�r� de cette fa�on.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Modification du format
    Par zoom61 dans le forum IHM
    R�ponses: 11
    Dernier message: 16/08/2007, 11h13
  2. Modification des format de saisie des attributs
    Par yanne dans le forum W4 Express
    R�ponses: 1
    Dernier message: 22/06/2007, 16h51
  3. Modification du format date de mes cellules excel
    Par largo9020 dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 19/11/2006, 14h53
  4. [XML - CSS] Programme de modification XML format�
    Par Bloodscalp dans le forum Mise en page CSS
    R�ponses: 1
    Dernier message: 27/09/2006, 15h37
  5. imposer un "format" � un int
    Par barucca dans le forum C++
    R�ponses: 10
    Dernier message: 22/04/2005, 13h24

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