11522 sujets

JavaScript, DOM et API Web HTML5

Pages :
Salut!

Voila j'ai trouvé sur google une fonction qui permettrait de récupérer la valeur d'un select sauf que pour moi elle marche pas (comme par hasard XD) mais bon je suis un noob de la programmation web, donc y a un truc que j'ai du mal faire ....

bref

Voila la fonction: (dans le head)

	function getSelectValue(selectId) {
		var elmt = document.getElementById(selectId);
		if(elmt.multiple == false){
			return elmt.options[elmt.selectedIndex].value;
		}
		var values = new Array();
		for(var i=0; i< elmt.options.length; i++){
			if(elmt.options[i].selected == true){
				values[values.length] = elmt.options[i].value; 
			}
		}	
		return values;	
	}


En fait je voudrais récupérer l'année sélectionnée par l'utilisateur, ou meme dès le départ (pour l'instant j'ai 2011 et 2012 et je voudrais que par defaut c'est 2011 mais que meme là, la fonction récupère la valeur 2011 et n'attend pas un changement de la part de l'utilisateur)

au final je voudrais l'ajouter à ca :

postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=2011&month=all&areaOUcountry=";


et donc au lieu de 2011 mettre par exemple

postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" +  getSelectValue("select_year") + "&month=all&areaOUcountry=";


Mon select (dans le body)
		
<p ALIGN=center>
	<select id = "select_year">
		<option value= "2011">2011</option>
		<option value= "2012">2012</option>
	</select>
</p>



J'espere que vous pourrez m'aider =)[/i][/i]
Bonjour,

J'ai vu dans d'autres posts que tu utilise jquery.
essaye de l'utiliser afin de récupérer la valeur de ton select :

$("#select_year").val();

Modifié par qualithras (20 Apr 2012 - 12:38)
Salut

Les deux fonctions sont correctes.
Le code que tu as mis n'est pas suffisant pour deviner la cause de ton problème, mais je suis persuadé à 90% que tu faits appel à la fonction (Soit celle définie en haut soit en faisant recours à JQuery) en dur (sans le faire à travers un événement, et le plus souvent dans le même fichier html), avant la définition de ton select sur le DOM. Un argument: est que Jquery le trouve pas au temps que le select existe dans ta structure html.

Exemple:

Si dans le head de ton fichier html tu mets ça (bien sur en supposant que tu as bien mis une source vers le Jquery plugin auparavant):

<script type="text/javascript">alert ($("#select_year").val());</script>


Et après au niveau du fichier tu mets ton select:


...
</head>
<body>
<select id="your_select">
<option>2011</option>
<option>2012</option>
</select>
...


Ton select ne sera pas connu par notre appel en haut car l'appel est fait avant l'arrivé à notre select au niveau du DOM.
Si c'est vraiment ton cas, je te propose de faire recours, à l'événement ready ou onload selon ton besoin, ou de faire appelle sur clique d'un bouton, mais surtout pas comme expliqué en haut.

Bonne courage
salut...

en fait il te manques peu de chose la bonne forme est celle-ci

$("#select_year option:selected").val();
Salut

Pour l'écriture de :
a écrit :
en fait il te manques peu de chose la bonne forme est celle-ci
$("#select_year option:selected").val();

C'est correcte, mais dire que cette écriture:
$('#select_year').val()

lui manque quelque chose ?!. Je ne crois pas (J'ai déjà travaillé avec, dans quelques dizaines de projets sans problème) Smiley smile

A la fin à toi de choisir une écriture parmi : "#select_year option:selected" et "#select_year" Smiley smile

Pour:

pchlj a écrit :
pour unami la récup de la valeur se fera plutôt ainsi

$(&quot;#select_year&quot;).text();


"Je ne crois pas aussi" Smiley smile , le .text() sur un select, te récupérera une concaténation des string inclus dans tes options (La concaténation du contenu des items de la sélection et leurs children généralement, et quand on parle de contenu on parle des textNodes)
Quant aux éléments d'un formulaire, on fait recours à .val(), car ça permet d'avoir la value, ce que .text() ne peut pas faire, à part quelques éléments de formulaire, qui puisse contenir des textNodes, comme le <teaxtarea>[textNode]</textarea> et <button> Smiley smile

Finalement j'appuie toujours ma supposition.

a+
Merci pour vos réponses !

Alors si j'ai bien compris dans tout les cas je dois faire appel à un evenement unload ou ready .... bon en fait je sais pas trop ce que c'est XD mais bon vais essayer de voir ^^


a écrit :
"Je ne crois pas aussi" smile , le .text() sur un select, te récupérera une concaténation des string inclus dans tes options (La concaténation du contenu des items de la sélection et leurs children généralement, et quand on parle de contenu on parle des textNodes)
Quant aux éléments d'un formulaire, on fait recours à .val(), car ça permet d'avoir la value, ce que .text() ne peut pas faire, à part quelques éléments de formulaire, qui puisse contenir des textNodes, comme le <teaxtarea>[textNode]</textarea> et <button> smile

>>>>>> wa da fuq Smiley biggol


bon sinon je vais voir, mais si vous avez un exemple du truc ready unload hésitez pas

Parce que le probleme c'est que je peux pas mettre click de souris, enfin si mais c'est pas ce que je veux ....

Ce que je veux c'est qu'il regarde tout le temps la valeur ..... et pas seulement a son changement ..... comme ca des le chargement de la page quand ca sera par defaut sur "2011" je pourrais faire en sorte d'avoir cette valeur grace a ca et non pas en dur comme j'ai a présent et quand la personne sélectionnera "2012" et bien il regardera cette valeur et refera la meme ......
Modifié par InfoGeo (23 Apr 2012 - 10:00)
Salut

Alors ce qu tu doit faire normalement c'est de récupérer la valeur de ton select, au chargement de la page à l'aide d'un ready, et après tu la récupérera quand le select change de valeur, (C'est ce que j'ai compris de ta demande, mais normalement je suis sûr que tu puisses ne pas faire recours à la variable globale, cela en faisant appel à la valeur du select, quand tu en as vraiment besoin):

<script type="text/javascript">
var selected_year='';
$(function(){

//Récupération au chargement de la page.
selected_year=$("#select_year").val();

//Récupération au changement de valeur du select.
$("#select_year").on('change',function(){
selected_year=$("#select_year").val();
});

});
</script>


Alors en tout cas, et puisque j'arrive pas à comprendre vraiment ton besoin, je crois que ce code en haut répond à ta question, mais à ta place j'en aurais pas procédé de la sorte (Une variable globale), mais je vais faire appel à la valeur de mon select quand j'en aurais besoin.
Toute fois ça: /Ce que je veux c'est qu'il regarde tout le temps la valeur/ , n'est pas vraiment compréhensible au moins pour moi, (Qui (Il)? comment 'Regarder'? Comment (tout le temps)) Smiley smile
En tout cas j'espère que ça t'aidera pour t'éclaircir le chemin.

Bonne journée.
merci pour ta réponse !


bah je pense que c'est l'idée oui mais ca marche pas ... enfin peut etre que je sais pas comment m en servir mais ce que je voudrais ... je sais pas comment l expliquer mais bon ...

Je voudrais ca:
postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";


le selected_year, je voudrais qu'il soit toujours égale à l'année qui est sélectionnée dans le select Smiley ravi Que ca soit au démarrage du site, ou quand justement sa valeur change parce que l'utilisateur a sélectionné 2012 par exemple ....

j'ai testé avec des alerts ....

Quand y a ca:
	$(function(){
		//Récupération au chargement de la page.
		selected_year=$("#select_year").val();
		alert (selected_year);
		//Récupération au changement de valeur du select.
		$("#select_year").on('change',function(){
			selected_year=$("#select_year").val();
		});
	});


il m'affiche bien 2011 ou 2012

mais quand y a :

	$(function(){
		//Récupération au chargement de la page.
		selected_year=$("#select_year").val();
		
		//Récupération au changement de valeur du select.
		$("#select_year").on('change',function(){
			selected_year=$("#select_year").val();
		});
		alert (selected_year);
	});


ou (meme si je fais des changement dans le select, je sélectionne 2011 au lieu de 2012 et vis versa)

	$(function(){
		//Récupération au chargement de la page.
		selected_year=$("#select_year").val();
		
		//Récupération au changement de valeur du select.
		$("#select_year").on('change',function(){
			selected_year=$("#select_year").val();
                        alert (selected_year);
		});


});

bah il affiche pas du tout le alert ......

et quand y a ca:

var selected_year='';

	$(function(){
		//Récupération au chargement de la page.
		selected_year=$("#select_year").val();
		
		//Récupération au changement de valeur du select.
		$("#select_year").on('change',function(){
			selected_year=$("#select_year").val();			
		});	
	});

	
	postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";
	alert (selected_year);


il fait un alert mais il affiche rien.....

Donc il reconnait pas select_year en dehors de la fonction apparemment, et pis meme a l'intérieur il le reconnait pas tout le temps ....


Donc je pense que c'est dans l'idée de ce que je veux mais je sais pas trop comment le faire marcher

j'espere que tu pourras encore m'aider, ou qqun d'autre .... svp =)
Salut

La déclaration de la variable n'est pas un luxe, c'est pour cela que tu devais la mettre sur toutes tes essaies, toute fois pour t'aider de la façon correcte - car depuis tout ce temps j'essayais de suivre ta logique - dit moi où appelles tu, ou où faits tu usage de ça:

postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";


D'ailleurs je suis persuadé qu'il y a pas mal d'erreurs que ta console te déclarera (Explication de pourquoi un code correcte ne marche pas), mais pour lesquelles tu n'accordes pas d'attention pour le moment, car la première remarque c'est que j'ai jamais vu dans les bouts de code que tu as fourni, une déclaration de cette variable: "postsales".

Donc tu n'as pas besoin de tout ce délire, ce que je te propose c'est de nous fournir où appelles tu le code que j'ai mentionné. Apparemment c'est de l'ajax, alors fournis nous son bout de code et nous allons te mettre sur le chemin. Smiley smile
:O

Alors oui postsales, je l ai mis direct sans faire de var quoi .... ^^

Bon bah voila :

HEAD

var selected_year='';

	$(function(){
		//Récupération au chargement de la page.
		selected_year=$("#select_year").val();
		
		//Récupération au changement de valeur du select.
		$("#select_year").on('change',function(){
			selected_year=$("#select_year").val();			
		});	
		alert (selected_year);
	});

	
	postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	
	presales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=presales&year=2011&month=all&areaOUcountry=";
	sales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=sales&year=2011&month=all&areaOUcountry=";
	trainer="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=trainer&year=2011&month=all&areaOUcountry=";
	internal="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=internal&year=2011&month=all&areaOUcountry=";
	external="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=external&year=2011&month=all&areaOUcountry=";
	certif_exam="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certif exam&year=2011&month=all&areaOUcountry=";
	course="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=course&year=2011&month=all&areaOUcountry=";
	webinar="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=webinar&year=2011&month=all&areaOUcountry=";
	specific_certification="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=specific certification&year=2011&month=all&areaOUcountry=";
	certification="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certification&year=2011&month=all&areaOUcountry=";
	laboratory="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=laboratory&year=2011&month=all&areaOUcountry=";
	classroom="nom_duration=classroom&year=2011&month=all&country=";
	elearning="nom_duration=elearning&year=2011&month=all&country=";	
	
	
	select_country ("world");
	
	function select_country (thecountry) {
		ajax_call (postsales + thecountry);
		ajax_call (presales + thecountry);
		ajax_call (sales + thecountry);
		ajax_call (trainer + thecountry);
		ajax_call (certification + thecountry);
		ajax_call (certif_exam + thecountry);
		ajax_call (specific_certification + thecountry);
		ajax_call (course + thecountry);
		ajax_call (laboratory + thecountry);
		ajax_call (webinar + thecountry);
		ajax_call (internal + thecountry);
		ajax_call (external + thecountry);	
		ajax_call (classroom + thecountry);
		ajax_call (elearning + thecountry);
	}

	function ajax_call(what2do){
		$.ajax({
			type: "GET",
			dataType: "json",
			url: "data.php?" + what2do,
			success: function(json) {
				var nom = json['nom'];
				nom = nom.replace(" ","_");
				if (nom == "classroom" || nom == "elearning"){
					$('#id' + nom + 'data').html(json['duration']+ " days");
				}
				else {
					$('#id' + nom + 'data').html(json['ladata']);			
				}			
			}
		});
	};	



BODY

<div id="DIV_MOVE">
<div id="D_MOVE_TITRE"> Selection </div>
<div id="DIV_MOVE_MENU">Country</div> <br/>
<a href="#" onclick="javascript:visibilite('div_a-e'); return false;">A - E</a><br/>
<div id="div_a-e" style="display:none;">
<div id="DIV_MOVE_SOUS_MENU">
	
	<br/>
	<a href="#" onclick="select_country('argentina')">Argentina</a><br/>
	<a href="#" onclick="select_country('australia')">Australia</a><br/>
	<a href="#" onclick="select_country('austria')">Austria</a><br/>
	<a href="#" onclick="select_country('bangladesh')">Bangladesh</a><br/>
	<a href="#" onclick="select_country('belgium')">Belgium</a><br/>
	<a href="#" onclick="select_country('brazil')">Brazil</a><br/>
	<a href="#" onclick="select_country('bulgaria')">Bulgaria</a><br/>
	<a href="#" onclick="select_country('cameroon')">Cameroon</a><br/>
	<a href="#" onclick="select_country('canada')">Canada</a><br/>
	<a href="#" onclick="select_country('chile')">Chile</a><br/>
	<a href="#" onclick="select_country('china')">China</a><br/>
	<a href="#" onclick="select_country('colombia')">Colombia</a><br/>
	<a href="#" onclick="select_country('czech republic') ">Czech Republic</a><br/>
	<a href="#" onclick="select_country('denmark')">Denmark</a><br/>
	<a href="#" onclick="select_country('dominican rep.')">Dominican Rep.</a><br/>
	<a href="#" onclick="select_country('ecuador')">Ecuador</a><br/>
	<a href="#" onclick="select_country('egypt')">Egypt</a><br/>
	<a href="#" onclick="select_country('el salvador')">El Salvador</a><br/>
</div>		
</div><br/>					

<a href="#" onclick="javascript:visibilite('div_f-l'); return false;">F - L</a><br/>
<div id="div_f-l" style="display:none;">
<div id="DIV_MOVE_SOUS_MENU">
	<a href="#" onclick="select_country('finland')">Finland</a><br/>
	<a href="#" onclick="select_country('france')">France</a><br/>
	<a href="#" onclick="select_country('gabon')">Gabon</a><br/>
	<a href="#" onclick="select_country('georgia')">Georgia</a><br/>						
	<a href="#" onclick="select_country('germany')">Germany</a><br/>
	<a href="#" onclick="select_country('greece')">Greece</a><br/>
	<a href="#" onclick="select_country('guatemala')">Guatemala</a><br/>
	<a href="#" onclick="select_country('hong kong')">Hong Kong</a><br/>
	<a href="#" onclick="select_country('hungary')">Hungary</a><br/>
	<a href="#" onclick="select_country('india')">India</a><br/>
	<a href="#" onclick="select_country('indonesia')">Indonesia</a><br/>
	<a href="#" onclick="select_country('ireland')">Ireland</a><br/>
	<a href="#" onclick="select_country('israel')">Israel</a><br/>
	<a href="#" onclick="select_country('italy')">Italy</a><br/>
	<a href="#" onclick="select_country('japan')">Japan</a><br/>
	<a href="#" onclick="select_country('kuwait')">Kuwait</a><br/>
	<a href="#" onclick="select_country('latvia')">Latvia</a><br/>
	<a href="#" onclick="select_country('luxembourg')">Luxembourg</a><br/>								
</div>		
</div><br/>					

<a href="#" onclick="javascript:visibilite('div_m-r'); return false;">M - R</a><br/>
<div id="div_m-r" style="display:none;">
<div id="DIV_MOVE_SOUS_MENU">					
	<a href="#" onclick="select_country('malaysia')">Malaysia</a><br/>
	<a href="#" onclick="select_country('mauretania')">Mauretania</a><br/>
	<a href="#" onclick="select_country('mauritius')">Mauritius</a><br/>
	<a href="#" onclick="select_country('mexico')">Mexico</a><br/>
	<a href="#" onclick="select_country('monaco')">Monaco</a><br/>
	<a href="#" onclick="select_country('morocco')">Morocco</a><br/>
	<a href="#" onclick="select_country('netherlands')">Netherlands</a><br/>
	<a href="#" onclick="select_country('new zealand') ">New Zealand</a><br/>
	<a href="#" onclick="select_country('norway')">Norway</a><br/>
	<a href="#" onclick="select_country('oman')">Oman</a><br/>
	<a href="#" onclick="select_country('pakistan')">Pakistan</a><br/>
	<a href="#" onclick="select_country('paraguay')">Paraguay</a><br/>
	<a href="#" onclick="select_country('peru')">Peru</a><br/>
	<a href="#" onclick="select_country('philippines')">Philippines</a><br/>
	<a href="#" onclick="select_country('poland')">Poland</a><br/>
	<a href="#" onclick="select_country('portugal')">Portugal</a><br/>
	<a href="#" onclick="select_country('qatar')">Qatar</a><br/>
	<a href="#" onclick="select_country('romania')">Romania</a><br/>
	<a href="#" onclick="select_country('russian federation')">Russian Federation</a><br/>					
</div>		
</div><br/>					

<a href="#" onclick="javascript:visibilite('div_s-z'); return false;">S - Z</a><br/>
<div id="div_s-z" style="display:none;">
<div id="DIV_MOVE_SOUS_MENU">		
	<a href="#" onclick="select_country('saudi arabia')">Saudi Arabia</a><br/>				
	<a href="#" onclick="select_country('singapore')">Singapore</a><br/>
	<a href="#" onclick="select_country('slovakia')">Slovakia</a><br/>
	<a href="#" onclick="select_country('south africa')">South Africa</a><br/>
	<a href="#" onclick="select_country('south korea')">South Korea</a><br/>
	<a href="#" onclick="select_country('spain')">Spain</a><br/>
	<a href="#" onclick="select_country('sweden')">Sweden</a><br/>
	<a href="#" onclick="select_country('switzerland')">Switzerland</a><br/>
	<a href="#" onclick="select_country('taiwan')">Taiwan</a><br/>
	<a href="#" onclick="select_country('thailand')">Thailand</a><br/>
	<a href="#" onclick="select_country('tunisia')">Tunisia</a><br/>
	<a href="#" onclick="select_country('turkey')">Turkey</a><br/>
	<a href="#" onclick="select_country('ukraine')">Ukraine</a><br/>
	<a href="#" onclick="select_country('united arab emirates')">United Arab Emirates</a><br/>
	<a href="#" onclick="select_country('united kingdom')">United Kingdom</a><br/>
	<a href="#" onclick="select_country('united states')">United States</a><br/>
	<a href="#" onclick="select_country('uruguay')">Uruguay</a><br/>
	<a href="#" onclick="select_country('uzbekistan')">Uzbekistan</a><br/>
	<a href="#" onclick="select_country('vietnam')">Vietnam</a><br/>
</div>		
</div><br/><br/>	

<div id="DIV_MOVE_MENU">Year</div> <br/>
<div id="DIV_MOVE_SOUS_MENU">	
<p>
<select id = "select_year">
	<option value= "2011">2011</option>
	<option value= "2012">2012</option>
</select>
</p><br/>
</div>	
</div>		
	


BODY

<div id="global">
<p>				
<div id="resume">			
<!-- 2011 -->
<div class ="souligne">
<a href="" onclick="javascript:visibilite('divid1'); return false;">En 2011:</a> 
</div>	
<br/><br/>
<div id="divid1" style="display:none;">		
<TABLE BORDER="0px" cellspacing="12">
<THEAD  ALIGN = "center">				
	<TR>
		<TD> Postsales <div class="marge"></div></TD>
		<TD> Presales <div class="marge"></div></TD>
		<TD> Sales <div class="marge"></div></TD>
		<TD> Trainer</TD>								
	</TR>
	<TR>
		<TH><p id ="idpostsalesdata"></p><div class="marge"></div></TH>
		<TH><p id ="idpresalesdata"></p><div class="marge"></div></TH>
		<TH><p id ="idsalesdata"></p><div class="marge"></div></TH>
		<TH><p id ="idtrainerdata"></p><div class="marge"></div></TH>
	</TR>
</THEAD >	
</TABLE><br/>
<TABLE BORDER="0px" cellspacing="12">
<THEAD  ALIGN = "center">				
	<TR>
		<TD> Certification <div class="marge"></div></TD>
		<TD> Certif. Exam <div class="marge"></div></TD>
		<TD> Specific Certification <div class="marge"></div></TD>
		<TD> Course <div class="marge"></div></TD>
	</TR>
	<TR>
		<TH><p id ="idcertificationdata"></p><div class="marge"></div></TH>
		<TH><p id ="idcertif_examdata"></p><div class="marge"></div></TH>
		<TH><p id ="idspecific_certificationdata"></p><div class="marge"></div></TH>
		<TH><p id ="idcoursedata"></p><div class="marge"></div></TH>
	</TR>
</THEAD >	
</TABLE><br/>					
<TABLE BORDER="0px" cellspacing="12">
<THEAD  ALIGN = "center">				
	<TR>
		<TD> Laboratory <div class="marge"></div></TD>
		<TD> Webinar <div class="marge"></div></TD>
		<TD> Internal <div class="marge"></div></TD>
		<TD> External <div class="marge"></div></TD>	
	</TR>
	<TR>
		<TH><p id ="idlaboratorydata"></p><div class="marge"></div></TH>
		<TH><p id ="idwebinardata"></p><div class="marge"></div></TH>
		<TH><p id ="idinternaldata"></p><div class="marge"></div></TH>
		<TH><p id ="idexternaldata"></p><div class="marge"></div></TH>	
	</TR>
</THEAD >	
</TABLE><br/>
<TABLE BORDER="0px" cellspacing="12">
<THEAD  ALIGN = "center">				
	<TR>								
		<TD> Classroom Duration <div class="marge"></div></TD>
		<TD> E-learning Duration <div class="marge"></div></TD>
	<TR>							
		<TH><p id ="idclassroomdata"></p><div class="marge"></div></TH>	
		<TH><p id ="idelearningdata"></p><div class="marge"></div></TH>	
	</TR>
</THEAD >	
</TABLE>
<br/><br/>				
</div>

</div>	
</p>



Screenshot: aperçu
http://gyazo.com/11f4aebebab425c070d4ee77a243d339


Voila en espérant que ca pourra vous aider plus à m'aider donc =)

Et vraiment, merci à toi Unami qui essaye vraiment de m aider et à tous les autres =)
Bonjour,
Cette variable n'est pas au bon endroit je pense

postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	



car elle n'est pas mise à jour, une fois définie elle n'est plus mise à jour...

eesai de remplacer ceci :

var selected_year='';



	$(function(){

		//Récupération au chargement de la page.

		selected_year=$("#select_year").val();

		

		//Récupération au changement de valeur du select.

		$("#select_year").on('change',function(){

			selected_year=$("#select_year").val();			

		});	

		alert (selected_year);

	});



	

	postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	


par cela



var selected_year='';
var postsales = '';



	$(function(){

		//Récupération au chargement de la page.

		selected_year=$("#select_year").val();

		

		//Récupération au changement de valeur du select.

		$("#select_year").change(function(){

			selected_year=$("#select_year").val();	
//mise à jour		
postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	
		});	

		

	});



	

	postsales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	
A premiere vue je pense pas que ca marche pas, il faudrait plutot le faire comme ca:

var selected_year;
var postsales;

$(function() {
    selected_year = $("#monSelect").val();
    postsales = "type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";
    alert(postsales);
    
    //Récupération au changement de valeur du select.
    $("#monSelect").on('change',function(){
        selected_year = $("#monSelect").val();
        postsales = "type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";
        alert(postsales);
    });
});

>>>> Gothor

Cependant c un peu ...... "cochon" =)

Donc je voulais voir si y avait pas mieux =) De plus y a pas que Postsales comme variable, y a aussi:


	presales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=presales&year=2011&month=all&areaOUcountry=";

	sales="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=sales&year=2011&month=all&areaOUcountry=";

	trainer="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=trainer&year=2011&month=all&areaOUcountry=";

	internal="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=internal&year=2011&month=all&areaOUcountry=";

	external="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=external&year=2011&month=all&areaOUcountry=";

	certif_exam="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certif exam&year=2011&month=all&areaOUcountry=";

	course="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=course&year=2011&month=all&areaOUcountry=";

	webinar="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=webinar&year=2011&month=all&areaOUcountry=";

	specific_certification="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=specific certification&year=2011&month=all&areaOUcountry=";

	certification="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certification&year=2011&month=all&areaOUcountry=";

	laboratory="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=laboratory&year=2011&month=all&areaOUcountry=";

	classroom="nom_duration=classroom&year=2011&month=all&country=";

	elearning="nom_duration=elearning&year=2011&month=all&country=";	



merci d'avoir répondu
Modifié par InfoGeo (25 Apr 2012 - 14:24)
Déjà, tu peux commencer par isoler ton code dans une fonction...
var selected_year;
var postsales;

$(function() {
    getDatas();
    
    //Récupération au changement de valeur du select.
    $("#monSelect").on('change',function(){
        getDatas();
    });
});

function getDatas() {
    selected_year = $("#monSelect").val();
    postsales = "type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";
    /* presales = ...
    etc... */
    alert(postsales);
}

Modifié par Gothor (25 Apr 2012 - 13:21)
Salut

Alors comme je disais, il y a pas mal d'erreurs de déclaration, d'autres logique (Le même problème du select 'Il va falloir connaitre la chronologie d'exécution des instructions'), et finalement je confirme mes dires, tu n'as pas besoin de passer par des variables globales,
voici quelques chose qui doit normalement marché, et n'oublies pas que tu dois te former un peu (ou beaucoup, ça dépend de toi Smiley lol ) plus:

//Le ready
$(function(){

	/*l'appel de cette fonction doit être fait ici (Dans le ready) pour le départ/chargement
	Le même problème, tu fait appel au select avant qu'il soit prêt sur ton DOM*/
	
	select_country ("world");
	
	/*Les autres appelles de cette fonction tu les gères à travers ton html
	Il y a une meilleure façon pour le faire, mais pour le moment, je réctifie le nécessaire
	et à toi de te documenter un peu au futur*/


});

//Déclaration de la fonction select_country
function select_country (thecountry) {
	//La déclaration de tes variables va se faire ici en tant que variables locales de la fonctions
	//(Les variables globales sont à éviter que pour le prémordiale)
	var selected_year=$('#select_year').val();
	
	var url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	
	ajax_call (url + thecountry);
	url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=presales&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=sales&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=trainer&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=internal&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=external&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certif exam&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=course&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=webinar&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=specific certification&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certification&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=laboratory&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="nom_duration=classroom&year=" + selected_year + "&month=all&country=";
	ajax_call (url + thecountry);
	url="nom_duration=elearning&year=" + selected_year + "&month=all&country=";
	ajax_call (url + thecountry);
}

//la fonction d'appel Ajax
function ajax_call(what2do){
	$.ajax({
		type: "GET",
		dataType: "json",
		url: "data.php?" + what2do,
		success: function(json) {
			var nom = json['nom'];
			nom = nom.replace(" ","_");
			if (nom == "classroom" || nom == "elearning"){
				$('#id' + nom + 'data').html(json['duration']+ " days");
			}
			else {
				$('#id' + nom + 'data').html(json['ladata']);			
			}			
		}
	});
};


Bonne courage
a écrit :

A premiere vue je pense pas que ca marche il faudrait plutot le faire comme ca:


Et ça marche maintenant ?
Modifié par qualithras (25 Apr 2012 - 14:20)
Le problème Unami c'est que la ca marche pas parce que y a pu d'historie de au changeemnt du select il faut changer la valeur ......
Comment je fais ca .....

@Gothor: c'est peut etre ca, je sais pas ......
Mais c'est vrai que normalement il faut éviter les variables globales .....
Salut

Je viens de faire une autre remarque, tu as dupliqué ton id="DIV_MOVE_MENU" plusieurs fois, ce n'est pas admis, l'id est unique sur toute la page.
En effet sur le code entier que tu as fourni là haut, tu n'appelles pas ta fonction select_country() que sur le clique sur les liens, c'est pour cela que j'ai dû enlever le change sur le select.
Alors dans ce cas et si tu voudras faire appel aussi à ta fonction qui charge les datas au change du select, je vais procéder à travers, mais en se basant sur ce que tu as déjà fait, sachant qu'il y a des façon plus propre à le faire, mais vu que c'est une longue question, et qu'il va falloir que tu te formes pour connaitre les bons pratiques.

Voilà comment tu vas agir relativement à ta structure et ta logique pour charger aussi les données:

$(function(){

	/*l'appel de cette fonction doit être fait ici (Dans le ready) pour le départ/chargement
	Le même problème, tu fait appel au select avant qu'il soit prêt sur ton DOM*/
	
	select_country ("world",false);
	$('#select_year').on('change',function(){
		var sl=$('.selected_country');
		var cntry= (sl.length ? sl.eq(0).text().toLowerCase() : 'world');
		select_country (cntry,false)
	});
	
	/*Les autres appelles de cette fonction tu les gères à travers ton html
	Il y a une meilleure façon pour le faire, mais pour le moment, je réctifie le nécessaire
	et à toi de te documenter un peu au futur*/


});

//Déclaration de la fonction select_country
function select_country (thecountry,clspross) {

	//La mise en place de la class selected_country pour distingué le pays choisi
	//L'argument clspross est facultatif et je l'ai ajouté pour ne pas modifié ce que tu as fait niveau ton html
	//et pour faire dictinction entre les appeles sur le clique et les appelles directes de la fonction.
	if(typeof(clspross)=='undefined'){
		$('.selected_country').removeClass('selected_country');
		$(this).addClass('selected_country');
	}
	
	//La déclaration de tes variables va se faire ici en tant que variables locales de la fonctions
	//(Les variables globales sont à éviter que pour le prémordiale)
	var selected_year=$('#select_year').val();
	
	var url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";	
	ajax_call (url + thecountry);
	url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=presales&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=sales&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=trainer&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=internal&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=external&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certif exam&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=course&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=webinar&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=specific certification&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certification&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=laboratory&year=" + selected_year + "&month=all&areaOUcountry=";
	ajax_call (url + thecountry);
	url="nom_duration=classroom&year=" + selected_year + "&month=all&country=";
	ajax_call (url + thecountry);
	url="nom_duration=elearning&year=" + selected_year + "&month=all&country=";
	ajax_call (url + thecountry);
}

//la fonction d'appel Ajax
function ajax_call(what2do){
	$.ajax({
		type: "GET",
		dataType: "json",
		url: "data.php?" + what2do,
		success: function(json) {
			var nom = json['nom'];
			nom = nom.replace(" ","_");
			if (nom == "classroom" || nom == "elearning"){
				$('#id' + nom + 'data').html(json['duration']+ " days");
			}
			else {
				$('#id' + nom + 'data').html(json['ladata']);			
			}			
		}
	});
};


Je n'ai pas testé le code, à toi de la faire, et je te conseille vivement de réviser tes bases Smiley smile

J'espère que ça résout ton problème

Bonne courage

Edition: J'ai corrigé une erreur sur ça dans mon script var sl=$('.selected_country'); j'ai voulu mettre le false, pour la fonction select_country et je me suis trompé Smiley langue
Modifié par unami (25 Apr 2012 - 20:30)
Pages :