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:
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:
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,
Citation:
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? :roll: