11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour Smiley biggrin ,

J'ai modifié mon site récemment afin que l'utilisateur puisse faire un trie non pas avec un select basique mais avec un select multiple. Smiley ravi

J'ai donc modifié mes fonctions comme ceci:

var tab_new_addon = ["0", "1"];
data_new_addon = new Array();		
for(var j=0;j<tab_new_addon.length;j++){
data_new_addon[j] =0;
for(var i=0;i<tab_selectBP.length;i++){ // car select multiple
	url = "type_data=Offer_type&type_areaOUcountry=" + save_type_country + "&nom_data=" + tab_new_addon[j] + "&year=" + selected_year + "&month=all&areaOUcountry=" + save_country + "&new_addon=" + selected_new_addon + "&BPname=" + tab_selectBP[i] + "&segment=" + selected_segment + "&Releas=" + selected_Releas + "&quantityORNet_euro=quantity";		
	ajax_call (url, function(json){					
		data_new_addon[j] =  data_new_addon[j] + json['ladata'];
	});
}
$('#idoffertype' + tab_new_addon[j] + 'data').html(data_new_addon[j]);
}


Pour ça aucun probleme, mais lorsque j'arrive à une fonction plus complexe, qui utilise des objet window et bien, je ne peux pas additionner ces objets window entre eux: Smiley bawling

var temp_new = 0;
var temp_addon = 0;
var tab_newOUaddon = ["0", "1"];
var tab_years =  <?php echo json_encode($tab_years_php); ?>;
var tab_month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];	
<?php			
$j=0;
foreach ($tab_years_php as $years) {
echo "tab_new$tab_years_php[$j] = new Array();
  tab_addon$tab_years_php[$j] = new Array();
  tab_new$tab_years_php[$j] = 0;
  tab_addon$tab_years_php[$j] = 0;";
$j = $j+1;
}
?>
for(var i=0;i<tab_month.length;i++){
for(var j=0;j<tab_newOUaddon.length;j++){
for(var k=0;k<tab_years.length;k++){					
for(var l=0;l<tab_selectBP.length;l++){
	url = "type_data=Offer_type&type_areaOUcountry=" + save_type_country + "&nom_data=" + tab_newOUaddon[j] + "&year=" + tab_years[k] + "&month=" + tab_month[i] + "&areaOUcountry=" + save_country  + "&new_addon=" + selected_new_addon + "&BPname=" + tab_selectBP[l] + "&segment=" + selected_segment + "&Releas=" + selected_Releas + "&quantityORNet_euro=quantity";		
	ajax_call (url, function(json){							
			if (tab_newOUaddon[j]== "0") {										
				window["tab_new"+tab_years[k].toString()][i + 1] = window["tab_new"+tab_years[k].toString()][i + 1] + json['ladata'];
			}
			else {
				window["tab_addon"+tab_years[k].toString()][i + 1] = window["tab_addon"+tab_years[k].toString()][i + 1] + json['ladata'];
			}
	});
}
}
}
}


Ceci: Smiley fache

window["tab_new"+tab_years[k].toString()][i + 1] = window["tab_new"+tab_years[k].toString()][i + 1] + json['ladata'];


ne marche pas, alors existe il un moyen pour faire en sorte que ca marche svp ? Smiley cligne

J'attend vivement votre réponse car je suis bien bloqué Smiley decu




PS: pour info, voici la meme fonction qui marchait avant correctement (avec un select non multiple): Smiley rolleyes

var tab_newOUaddon = ["0", "1"];
var tab_years =  <?php echo json_encode($tab_years_php); ?>;
var tab_month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];	
<?php			
$j=0;
foreach ($tab_years_php as $years) {
echo "tab_new$tab_years_php[$j] = new Array();
	  tab_addon$tab_years_php[$j] = new Array();";
$j = $j+1;
}
?>
for(var j=0;j<tab_newOUaddon.length;j++){
for(var k=0;k<tab_years.length;k++){
for(var i=0;i<tab_month.length;i++){
	url = "type_data=Offer_type&type_areaOUcountry=" + save_type_country + "&nom_data=" + tab_newOUaddon[j] + "&year=" + tab_years[k] + "&month=" + tab_month[i] + "&areaOUcountry=" + save_country  + "&new_addon=" + selected_new_addon + "&BPname=" + selected_BPname+ "&segment=" + selected_segment + "&Releas=" + selected_Releas + "&quantityORNet_euro=quantity";		
	ajax_call (url, function(json){							
			if (tab_newOUaddon[j]== "0") {
				window["tab_new"+tab_years[k].toString()][i + 1] = json['ladata'];	
			}
			else {
				window["tab_addon"+tab_years[k].toString()][i + 1] = json['ladata'];
			}
	});
}
}
}
[/i][/i][/i]
OK

En fait il n y a pas de soucis il est possible de les additionner entre eux, le probleme de mon code est que j'avais mal initialisé mes valeurs !

Initialisation correcte:

<?php			
$j=0;
foreach ($tab_years_php as $years) {
	echo "tab_new$tab_years_php[$j] = new Array();
		  tab_addon$tab_years_php[$j] = new Array();";
	for ($i=1;$i<13;$i++){
		echo "tab_new$tab_years_php[$j][$i] = 0;
			  tab_addon$tab_years_php[$j][$i] = 0;";
	}
	$j = $j+1;
}				
?>



Fonction complete:

if (selected_year == "allyear" &&  document.forms.checkbox_show_graph.showgraph.checked == true) {
var temp_new = 0;
var temp_addon = 0;
var tab_newOUaddon = ["0", "1"];
var tab_years =  <?php echo json_encode($tab_years_php); ?>;
var tab_month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];	
<?php			
$j=0;
foreach ($tab_years_php as $years) {
echo "tab_new$tab_years_php[$j] = new Array();
	  tab_addon$tab_years_php[$j] = new Array();";
for ($i=1;$i<13;$i++){
	echo "tab_new$tab_years_php[$j][$i] = 0;
		  tab_addon$tab_years_php[$j][$i] = 0;";
}
$j = $j+1;
}				
?>
for(var i=0;i<tab_month.length;i++){
for(var j=0;j<tab_newOUaddon.length;j++){
for(var k=0;k<tab_years.length;k++){					
	for(var l=0;l<tab_selectBP.length;l++){
		url = "type_data=Offer_type&type_areaOUcountry=" + save_type_country + "&nom_data=" + tab_newOUaddon[j] + "&year=" + tab_years[k] + "&month=" + tab_month[i] + "&areaOUcountry=" + save_country  + "&new_addon=" + selected_new_addon + "&BPname=" + tab_selectBP[l] + "&segment=" + selected_segment + "&Releas=" + selected_Releas + "&quantityORNet_euro=quantity";		
		ajax_call (url, function(json){							
				if (tab_newOUaddon[j]== "0") {										
					window["tab_new"+tab_years[k].toString()][i + 1] = window["tab_new"+tab_years[k].toString()][i + 1] + json['ladata'];
				}
				else {
					window["tab_addon"+tab_years[k].toString()][i + 1] = window["tab_addon"+tab_years[k].toString()][i + 1] + json['ladata'];
				}
		});
	}
}
}
}

}
[/i]