Se connecter avec
S'enregistrer | Connectez-vous

Récupération d'une variable javascript générer par un popup

Dernière réponse : dans Programmation

Bonjour à tous
Je cherche à récupérer une variable javascript de type( var variable) sur une autre page générer par un popup.
La variable permet de créer un histogramme à baton. :pt1cable: 
J'ai réussi à récupérer la variable par l'intermédiare de l'url de type mapage.html?variable

J'ai sur la page 1.html

<script type="text/javascript">
function transmettreParams(url, site, variable) {
url += "?";
url += variable;
location.href = url;
window.open(url);
window.location = site;
}
</script>
<script type="text/javascript">
var variable = "1,543435,354354,373574,34364,4553";
</script>
<a href='javascript:transmettreParams("maPage.html","1.html", variable)'>aller à mapage.html</a>

Je récupère la variable dans le popup mapage.html
<script language="JavaScript" type="text/javascript">
var variable =location.search.substring(1);
document.write(variable);
</script> :) 

Document.write() permet de me confirmer le transfert de variable
Mais c'est maintenant que ca se complique :??: 
Je n'arrive pas à intégrer la variable pour me donner la valeur Y de l'histogramme

Le script de l'histogramme que je détail pour simplifier
// Déclaration du tableau des X
var tabX=new MakeTab('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','32','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50');

// Déclaration du tableau des Y
var tabY=new MakeTab(variable); --> c'est ici ca ne fonctionne pas
var variable=location.search.substring(1);

function AffHisto(tabx,taby,incX,Y,titre,dX,dY,decal) {
// Déclaration des variables ie et ns
var ie="";var ns="";
// .length permet de connaitre le moment ou la variable taby s'arrete
var nb=taby.length;
//GetMax() Prend la plus grande valeur de taby
var max=GetMax(taby);
//GetMin() Prend la plus petite valeur de taby
var min=GetMin(taby);
// La variable incy est égal à la hauteur sur la valeur max pour la position Y
var incY=Y/max;
var tailleY=0; var tailleX=0;
// Demarrage d'une boucle i commence à 0; vérifie que i est inférieur ou égal à nb(nb est égal au nombre de données); incrémentation de la valeur i j'usqu'a obtenir la valeur i=nb ou la condition ne sera plus réalisé et la boucle s'interrompera.//
for(var i=0;i<nb;i++)

//La fonction math.floor permet de récupérer l'entier de la valeur()
// exemple: x = Math.floor(3.99);
//donne x = 3

// La variable taille Y est la variable définitive permettant de multiplier la hauteur(définit à 100) par la donnée qu'on veut mettre en histogramme//
{ tailleY=Math.floor(taby*incY);
tailleX=Math.floor(incX);

// On a un changement de couleur si une valeur i de la valeur Y est égale à la valeur max ou la valeur min; || signifie la fonction ou//
var nom="histo.gif"; if ((taby==max)||(taby==min)) {nom="orange.gif"}



//+= Ajoute l'opérande de gauche par l'opérande de droite et stocke le résultat dans l'opérande de gauche.//
//DIV style= On définit la position du block de l'histogrammme
//position:absolute permet de placer un block n'importe où sur la page
//height:100 la hauteur du block
// top:"+(dY-tailleY)+" position par rapport au haut de la page
//left:"+(dX+i*(incX+1))+" position par rapport à la gauche de la page

ie+="<DIV style='position:absolute;height:100;top:"+(dY-tailleY)+";left:"+(dX+i*(incX+1))+"'>";

// fonction de l'image( Alignement verticale par le bas; pas de bordure; affichage de l'image par la variable nom; hauteur de l'image par height="+tailleY+"; affichage de la valeur de l'mage par alt='"+tabx+" : "+(taby)+"')//
ie+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx+" : "+(taby)+"'>";
// affichage de la valeur en X (FONT size= taille de la police...)
ie+="<BR><FONT size='-2'><CENTER>"+tabx.substring(0,2)+"</CENTER></FONT>"+"</DIV>";

//Partie facultative
ns+="<LAYER height=100 width="+incX+" top='"+(dY-tailleY)+"' left='"+(dX+i*(incX+1))+"'>";
ns+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx+" : "+(taby)+"'>";
ns+="<BR><FONT size='-2'><CENTER>"+tabx.substring(0,2)+"<BR>"+tabx.substring(3,5)+"</CENTER></FONT>"+"</LAYER>";
//Fin de la partie facultative
}
// Demarrage d'une boucle i commence à 0; vérifie que i est inférieur ou égal à Math.round(max/decal)(math.round arrondi à l'entier au plus proche(prend la plus grande valeur de tabY sur 100)); incrémentation de la valeur i j'usqu'a obtenir la valeur i=nb ou la condition ne sera plus réalisé et la boucle s'interrompera.//
for(i=0;i<=Math.round(max/decal);i++) {
// Permet l'affichage des valeurs à l'ordonnée suivant le nombre maximum
ie+="<DIV style='position:absolute;top:"+(dY-decal*i*(incY))+";left:"+(dX-5)+"'><IMG src='red.gif' height='1' width='"+(nb*(incX+1)+5)+"'></DIV>";
ie+="<DIV style='position:absolute;top:"+(dY-8-decal*i*(incY))+";left:"+(dX-30)+"'><FONT size='-2' color='red'>"+(i*decal)+"</FONT></DIV>";

//Partie facultative
ns+="<LAYER top='"+(dY-decal*i*(incY))+"' left='"+(dX-5)+"'><IMG src='red.gif' height='1' width='"+(nb*(incX+1)+5)+"'></LAYER>";
ns+="<LAYER top='"+(dY-8-decal*i*(incY))+"' left='"+(dX-30)+"'><FONT size='-2' color='red'>"+(i*decal)+"</FONT></LAYER>";
//Fin de la partie facultative
}

// Si tous les éléments DIV ou les éléments HTML qui possède un attribut id alors on affichera la variable (ie) sinon la variable (ns)//
if ((document.all)||(document.getElementById)) {disp(ie)}
else {disp(ns)}
}

function GetMax(tab) {
var max=tab[0];
var nb=tab.length;
for(var i=0;i<nb;i++)
{max=Math.max(max,tab);}
return max;
}
function GetMin(tab) {
var min=tab[0];
var nb=tab.length;
for(var i=0;i<nb;i++)
{min=Math.min(min,tab);}
return min;
}
function MakeTab() {
this.length = MakeTab.arguments.length;
for (var i = 0; i < this.length; i++)
this = MakeTab.arguments;

}
function disp(txt) { document.write(txt) }




</SCRIPT>
<BODY>
</HEAD>
<SCRIPT language=javascript>
// Affichage ici
// AffHisto(coordonnées en X,en Y,largeur d'une barre, hauteur,titre,position en X, position en Y, increment de l'echelle) {
AffHisto(tabX,tabY,15,220,'',100,300,100);
</SCRIPT>
</BODY></HTML>

Fin du script

Merci de votre aide :) 
Peo
Lassé par la pub ? Créez un compte

Avec ceci sa fonctionne
// Déclaration du tableau des Y
var tabY=new MakeTab(1703,1722,1773,1813,1011);

Mais pas avec ceci
var variable=(1703,1722,1773,1813,1011);
var tabY=new MakeTab(variable);
Je ne vois pas la différence

Je pense que le problème vient de la fonction MakeTab :??: 
Cette fonction demande la longeur de l'intérieur de MakeTab avec .length
A mon avis il faut refaire la fonction MakeTab
function MakeTab() {
this.length = MakeTab.arguments.length; --> Il calcul la longueur du mot variable et pas son contenu
for (var i = 0; i < this.length; i++)
this = MakeTab.arguments;

}
Il faudrait prendre le contenu d'une variable .
Y a t'il une fonction javascript pour récupérer le contenu d'une variable :) 
Peut etre que c'est la solution :) 

Le code suivant fonctionne pour créer un histogramme à baton:

<HTML><HEAD>
<TITLE>Histogramme à baton</TITLE>
<SCRIPT LANGUAGE="JavaScript">


// Déclaration du tableau des X
var tabX=new MakeTab('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','32','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50');

// Déclaration du tableau des Y

var tabY=new MakeTab(1703,1722,1773,1813,1011,956,1683,1697,1548,1781,1696,1013,1120,1771,1813,1726,1624,986,966,942,1658,1729,1765,1706,1711,1221,1067,1368,1831,1187);

// Rien à toucher à partir d'ici
function AffHisto(tabx,taby,incX,Y,titre,dX,dY,decal) {
//Si la valeur est négative
//if (taby<0) {mult=-1} else {mult=1};
// Déclaration des variables ie et ns
var ie="";var ns="";
// .length permet de connaitre le moment ou la variable taby s'arrete
var nb=taby.length;
//GetMax() Prend la plus grande valeur de taby
var max=GetMax(taby);
//GetMin() Prend la plus petite valeur de taby
var min=GetMin(taby);
// La variable incy est égal à la hauteur sur la valeur max pour la position Y
var incY=Y/max;
var tailleY=0; var tailleX=0;
// Demarrage d'une boucle i commence à 0; vérifie que i est inférieur ou égal à nb(nb est égal au nombre de données); incrémentation de la valeur i j'usqu'a obtenir la valeur i=nb ou la condition ne sera plus réalisé et la boucle s'interrompera.
for(var i=0;i<nb;i++)

//La fonction math.floor permet de récupérer l'entier de la valeur()
// exemple: x = Math.floor(3.99);
//donne x = 3

// La variable taille Y est la variable définitive permettant de multiplier la hauteur(définit à 100) par la donnée qu'on veut mettre en histogramme
{ tailleY=Math.floor(taby*incY);
tailleX=Math.floor(incX);

// On a un changement de couleur si une valeur i de la valeur Y est égale à la valeur max ou la valeur min; || signifie la fonction ou
var nom="histo.gif"; if ((taby==max)||(taby==min)) {nom="orange.gif"}



//+= Ajoute l'opérande de gauche par l'opérande de droite et stocke le résultat dans l'opérande de gauche.
//DIV style= On définit la position du block de l'histogrammme
//position:absolute permet de placer un block n'importe où sur la page
//height:100 la hauteur du block
// top:"+(dY-tailleY)+" position par rapport au haut de la page
//left:"+(dX+i*(incX+1))+" position par rapport à la gauche de la page

ie+="<DIV style='position:absolute;height:100;top:"+(dY-tailleY)+";left:"+(dX+i*(incX+1))+"'>";

// fonction de l'image( Alignement verticale par le bas; pas de bordure; affichage de l'image par la variable nom; hauteur de l'image par height="+tailleY+"; affichage de la valeur de l'mage par alt='"+tabx+" : "+(taby)+"')
ie+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx+" : "+(taby)+"'>";
// affichage de la valeur en X (FONT size= taille de la police...)
ie+="<BR><FONT size='-2'><CENTER>"+tabx.substring(0,2)+"</CENTER></FONT>"+"</DIV>";

//Partie facultative
ns+="<LAYER height=100 width="+incX+" top='"+(dY-tailleY)+"' left='"+(dX+i*(incX+1))+"'>";
ns+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx+" : "+(taby)+"'>";
ns+="<BR><FONT size='-2'><CENTER>"+tabx.substring(0,2)+"<BR>"+tabx.substring(3,5)+"</CENTER></FONT>"+"</LAYER>";
//Fin de la partie facultative
}
// Demarrage d'une boucle i commence à 0; vérifie que i est inférieur ou égal à Math.round(max/decal)(math.round arrondi à l'entier au plus proche(prend la plus grande valeur de tabY sur 100)); incrémentation de la valeur i j'usqu'a obtenir la valeur i=nb ou la condition ne sera plus réalisé et la boucle s'interrompera.
for(i=0;i<=Math.round(max/decal);i++) {
// Permet l'affichage des valeurs à l'ordonnée suivant le nombre maximum
ie+="<DIV style='position:absolute;top:"+(dY-decal*i*(incY))+";left:"+(dX-5)+"'><IMG src='red.gif' height='1' width='"+(nb*(incX+1)+5)+"'></DIV>";
ie+="<DIV style='position:absolute;top:"+(dY-8-decal*i*(incY))+";left:"+(dX-30)+"'><FONT size='-2' color='red'>"+(i*decal)+"</FONT></DIV>";

//Partie facultative
ns+="<LAYER top='"+(dY-decal*i*(incY))+"' left='"+(dX-5)+"'><IMG src='red.gif' height='1' width='"+(nb*(incX+1)+5)+"'></LAYER>";
ns+="<LAYER top='"+(dY-8-decal*i*(incY))+"' left='"+(dX-30)+"'><FONT size='-2' color='red'>"+(i*decal)+"</FONT></LAYER>";
//Fin de la partie facultative
}

// Si tous les éléments DIV ou les éléments HTML qui possède un attribut id alors on affichera la variable (ie) sinon la variable (ns)
if ((document.all)||(document.getElementById)) {disp(ie)}
else {disp(ns)}
}

function GetMax(tab) {
var max=tab[0];
var nb=tab.length;
for(var i=0;i<nb;i++)
{max=Math.max(max,tab);}
return max;
}
function GetMin(tab) {
var min=tab[0];
var nb=tab.length;
for(var i=0;i<nb;i++)
{min=Math.min(min,tab);}
return min;
}
function MakeTab() {
this.length = MakeTab.arguments.length;
for (var i = 0; i < this.length; i++)
this = MakeTab.arguments;

}
function disp(txt) { document.write(txt) }




</SCRIPT>
<BODY>
</HEAD>
<SCRIPT language=javascript>
// Affichage ici
// AffHisto(coordonnées en X,en Y,largeur d'une barre, hauteur,titre,position en X, position en Y, increment de l'echelle) {
AffHisto(tabX,tabY,15,220,'',100,300,100);
</SCRIPT>
</BODY></HTML>

Pour ceux qui ça intéresse, le script fonctionne il suffit de rajouter des images de couleur (format 1px suffit).
Moi ce qui m'intéresse c'est de modifier la hauteur des batons. Je souhaite supprimer les constantes par une variable.
Si quelqu'un a une idée
Peo :wahoo: 

Etant nouveau sur le forum, je ne savait pas que ton premier message balise [code] était la signification de placer la balise code.
Je viens de lire le topics concernant les règles simples à respecter.
Pourquoi vous n'utiliser pas un texte clair dans les nouveaux sujets permettant d'insérer du code? Surtout dans un forum de programmation.
Et maintenant je cite vos propos Monsieur:
"et la balise [code] c'est pour les chiens ?" Ne me plait guère
Je pense tout de suite à un manque de respect envers une personne que vous ne connaissez pas.
Peofofo

Le code suivant fonctionne pour créer un histogramme à baton:
  1. <HTML><HEAD>
  2. <TITLE>Histogramme à baton</TITLE>
  3. <SCRIPT LANGUAGE="JavaScript">
  4.  
  5.  
  6. // Déclaration du tableau des X
  7. var tabX=new MakeTab('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','32','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50');
  8.  
  9. // Déclaration du tableau des Y
  10.  
  11. var tabY=new MakeTab(1703,1722,1773,1813,1011,956,1683,1697,1548,1781,1696,1013,1120,1771,1813,1726,1624,986,966,942,1658,1729,1765,1706,1711,1221,1067,1368,1831,1187);
  12.  
  13. // Rien à toucher à partir d'ici
  14. function AffHisto(tabx,taby,incX,Y,titre,dX,dY,decal) {
  15. //Si la valeur est négative
  16. //if (taby<0) {mult=-1} else {mult=1};
  17. // Déclaration des variables ie et ns
  18. var ie="";var ns="";
  19. // .length permet de connaitre le moment ou la variable taby s'arrete
  20. var nb=taby.length;
  21. //GetMax() Prend la plus grande valeur de taby
  22. var max=GetMax(taby);
  23. //GetMin() Prend la plus petite valeur de taby
  24. var min=GetMin(taby);
  25. // La variable incy est égal à la hauteur sur la valeur max pour la position Y
  26. var incY=Y/max;
  27. var tailleY=0; var tailleX=0;
  28. // Demarrage d'une boucle i commence à 0; vérifie que i est inférieur ou égal à nb(nb est égal au nombre de données); incrémentation de la valeur i j'usqu'a obtenir la valeur i=nb ou la condition ne sera plus réalisé et la boucle s'interrompera.
  29. for(var i=0;i<nb;i++)
  30.  
  31. //La fonction math.floor permet de récupérer l'entier de la valeur()
  32. // exemple: x = Math.floor(3.99);
  33. //donne x = 3
  34.  
  35. // La variable taille Y est la variable définitive permettant de multiplier la hauteur(définit à 100) par la donnée qu'on veut mettre en histogramme
  36. { tailleY=Math.floor(taby[i]*incY);
  37. tailleX=Math.floor(incX);
  38.  
  39. // On a un changement de couleur si une valeur i de la valeur Y est égale à la valeur max ou la valeur min; || signifie la fonction ou
  40. var nom="histo.gif"; if ((taby[i]==max)||(taby[i]==min)) {nom="orange.gif"}
  41.  
  42.  
  43.  
  44. //+= Ajoute l'opérande de gauche par l'opérande de droite et stocke le résultat dans l'opérande de gauche.
  45. //DIV style= On définit la position du block de l'histogrammme
  46. //position:absolute permet de placer un block n'importe où sur la page
  47. //height:100 la hauteur du block
  48. // top:"+(dY-tailleY)+" position par rapport au haut de la page
  49. //left:"+(dX+i*(incX+1))+" position par rapport à la gauche de la page
  50.  
  51. ie+="<DIV style='position:absolute;height:100;top:"+(dY-tailleY)+";left:"+(dX+i*(incX+1))+"'>";
  52.  
  53. // fonction de l'image( Alignement verticale par le bas; pas de bordure; affichage de l'image par la variable nom; hauteur de l'image par height="+tailleY+"; affichage de la valeur de l'mage par alt='"+tabx[i]+" : "+(taby[i])+"')
  54. ie+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx[i]+" : "+(taby[i])+"'>";
  55. // affichage de la valeur en X (FONT size= taille de la police...)
  56. ie+="<BR><FONT size='-2'><CENTER>"+tabx[i].substring(0,2)+"</CENTER></FONT>"+"</DIV>";
  57.  
  58. //Partie facultative
  59. ns+="<LAYER height=100 width="+incX+" top='"+(dY-tailleY)+"' left='"+(dX+i*(incX+1))+"'>";
  60. ns+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx[i]+" : "+(taby[i])+"'>";
  61. ns+="<BR><FONT size='-2'><CENTER>"+tabx[i].substring(0,2)+"<BR>"+tabx[i].substring(3,5)+"</CENTER></FONT>"+"</LAYER>";
  62. //Fin de la partie facultative
  63. }
  64. // Demarrage d'une boucle i commence à 0; vérifie que i est inférieur ou égal à Math.round(max/decal)(math.round arrondi à l'entier au plus proche(prend la plus grande valeur de tabY sur 100)); incrémentation de la valeur i j'usqu'a obtenir la valeur i=nb ou la condition ne sera plus réalisé et la boucle s'interrompera.
  65. for(i=0;i<=Math.round(max/decal);i++) {
  66. // Permet l'affichage des valeurs à l'ordonnée suivant le nombre maximum
  67. ie+="<DIV style='position:absolute;top:"+(dY-decal*i*(incY))+";left:"+(dX-5)+"'><IMG src='red.gif' height='1' width='"+(nb*(incX+1)+5)+"'></DIV>";
  68. ie+="<DIV style='position:absolute;top:"+(dY-8-decal*i*(incY))+";left:"+(dX-30)+"'><FONT size='-2' color='red'>"+(i*decal)+"</FONT></DIV>";
  69.  
  70. //Partie facultative
  71. ns+="<LAYER top='"+(dY-decal*i*(incY))+"' left='"+(dX-5)+"'><IMG src='red.gif' height='1' width='"+(nb*(incX+1)+5)+"'></LAYER>";
  72. ns+="<LAYER top='"+(dY-8-decal*i*(incY))+"' left='"+(dX-30)+"'><FONT size='-2' color='red'>"+(i*decal)+"</FONT></LAYER>";
  73. //Fin de la partie facultative
  74. }
  75.  
  76. // Si tous les éléments DIV ou les éléments HTML qui possède un attribut id alors on affichera la variable (ie) sinon la variable (ns)
  77. if ((document.all)||(document.getElementById)) {disp(ie)}
  78. else {disp(ns)}
  79. }
  80.  
  81. function GetMax(tab) {
  82. var max=tab[0];
  83. var nb=tab.length;
  84. for(var i=0;i<nb;i++)
  85. {max=Math.max(max,tab[i]);}
  86. return max;
  87. }
  88. function GetMin(tab) {
  89. var min=tab[0];
  90. var nb=tab.length;
  91. for(var i=0;i<nb;i++)
  92. {min=Math.min(min,tab[i]);}
  93. return min;
  94. }
  95. function MakeTab() {
  96. this.length = MakeTab.arguments.length;
  97. for (var i = 0; i < this.length; i++)
  98. this[i] = MakeTab.arguments[i];
  99.  
  100. }
  101. function disp(txt) { document.write(txt) }
  102.  
  103.  
  104.  
  105.  
  106. </SCRIPT>
  107. <BODY>
  108. </HEAD>
  109. <SCRIPT language=javascript>
  110. // Affichage ici
  111. // AffHisto(coordonnées en X,en Y,largeur d'une barre, hauteur,titre,position en X, position en Y, increment de l'echelle) {
  112. AffHisto(tabX,tabY,15,220,'',100,300,100);
  113. </SCRIPT>
  114. </BODY></HTML>
Lassé par la pub ? Créez un compte