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

peofofo

Nouveau membre
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
 

KangOl

Grand Maître
Code:
var tabY=new MakeTab(variable); 
var variable=location.search.substring(1);

tu vois vraiment pas pourquoi ca va pas ???
 

peo42

Nouveau membre
Il faut que je supprime le new ?
var tabY=MakeTab(variable);
var variable=location.search.substring(1);
Je fais un essai mais je ne pense pas que le problème vient du news
 

peo42

Nouveau membre
Merci Peofofo
Pour l'aide sur le transfert de variable en javascript.
Dsl, je n'ai pas de solution a proposé pour ton problème
 

peofofo

Nouveau membre
Oui exact j'ai demandé la variable avant de la déclarée.
J'ai essayé d'inverser mais sa n'a pas changer j'ai toujours rien
Merci de ton aide KangOI
Peofofo
 

peofofo

Nouveau membre
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 :)
 

KangOl

Grand Maître
euh ...
dans la version qui fonctionne, tu lui passes 5 paramètre tandis que dans l'autre tu ne lui passe qu'un seul et je me demande s'il est meme correct...
 

peofofo

Nouveau membre
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:
 

peofofo

Nouveau membre
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
 

peofofo

Nouveau membre
Le code suivant fonctionne pour créer un histogramme à baton:
Code:
<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[i]*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[i]==max)||(taby[i]==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[i]+" : "+(taby[i])+"') 
  ie+="<img valign='bottom' border=0 src='"+nom+"' width="+tailleX+" height="+tailleY+" alt='"+tabx[i]+" : "+(taby[i])+"'>"; 
// affichage de la valeur en X (FONT size= taille de la police...) 
  ie+="<BR><FONT size='-2'><CENTER>"+tabx[i].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[i]+" : "+(taby[i])+"'>"; 
  ns+="<BR><FONT size='-2'><CENTER>"+tabx[i].substring(0,2)+"<BR>"+tabx[i].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[i]);} 
 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[i]);} 
 return min; 
} 
function MakeTab() { 
 this.length = MakeTab.arguments.length; 
 for (var i = 0; i < this.length; i++) 
  this[i] = MakeTab.arguments[i]; 
 
} 
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>
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 000
Membres
1 586 387
Dernier membre
ouistititouille
Partager cette page
Haut