Javascript sous Internet explorer

Fermé
Asphel Messages postés 1 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 19 mai 2009 - 19 mai 2009 à 17:37
Bonjour,
Donc voilà mon probléme :
J'ai écri une fonction pour un projet en javascript : gotostep(id_step, tableau_step) , qui fait en sorte que lorsqu'on l'appelle, elle passe de l'étape courante à l'étape suivante, ou, si on lui passe en paramétre l'étape qu'on souhaite, elle va y aller directement. Tout ceci se fait à l'aide d'un tableau qui est géneré par le Php. La fonction fait appelle à une autre fonction : montrer_step(id_step) qui se charge de masquer toutes les autres étapes (qui sont en faites des div) et affiche celle qu'on souhaite voir ( = dont l'id est passé en paramétre). Ma fonction gotostep(); elle est surtout là pour faire le jeu de style nécessaire à la visibilité du processus de mon projet. Je m'explique : l'étape en cours est mise en évidence, les autres sont assombries, les sous-étapes de l'étape en cours sont visibile et les autres masqués. La page n'est chargée qu'une seule fois, lorsqu'on passe d'une étape à l'autre du processus, on masque/affiche juste des divs.

Enfin bref, mon probléme est le suivant : sous Firefox, aucun probléme, j'ai même pas de retour la console, mon code fait ce que je veux qu'il fasse. De même sous IE8. Mais par contre sous IE7 c'est le chaos. Je reçois des erreurs javascript :

"1[...] a la valeur nulle ou n'est pas un objet"
"1[...].lenght a la valeur nulle ou n'est pas un objet"

Voici ma fonction :
gotostep = function(id_step, process){

		var step_courrant = $('#sous_step_').val();
		var key = array_search(step_courrant, process[1])
		var arr_key = new Array(key);
		var index_step = parseInt(arr_key[0][0]);
		var index_sous_step = parseInt(arr_key[0][1]);

	if(!arguments[0])
	{
		if(index_sous_step+1 == process[1][index_step].length ) /*<=La première erreur viendrait de là?*/
		{
			$('#'+process[0][index_step]).removeClass('active_step');
			$('#'+process[0][index_step]).addClass('unactive_step');
			$('#'+'step_'+process[1][index_step][index_sous_step]).css('color : #85E621');

			index_step++;
			index_sous_step = 0;
			$('#'+process[0][index_step]).addClass('unactive_step');
			$('#'+process[0][index_step]).removeClass('active_step');
			$('#'+'step_'+process[1][index_step][index_sous_step]).css('color : #111111');

			montrer_step(process[1][index_step][index_sous_step]);
			$('#'+'sous_step_').val(process[1][index_step][index_sous_step]);
		}
		else
		{
			$('#'+'step_'+process[1][index_step][index_sous_step]).css('color : #85E621');
			index_sous_step++;
			$('#'+'step_'+process[1][index_step][index_sous_step]).css('color : #111111');
			montrer_step(process[1][index_step][index_sous_step]);
			$('#'+'sous_step_').val(process[1][index_step][index_sous_step]);
		}
	}
	else
	{
		var key_suivant = array_search(id_step, process[1])
		var arr_key_suivant = new Array(key_suivant);
		var index_step_suivant = parseInt(arr_key_suivant[0][0]);
		var index_sous_step_suivant = parseInt(arr_key_suivant[0][1]);

		$('#'+process[0][index_step]).removeClass('active_step');
		$('#'+process[0][index_step]).addClass('unactive_step');
		$('#'+'step_'+process[1][index_step][index_sous_step]).css('color : #85E621');
		montrer_step(id_step);
		$('#'+process[0][index_step_suivant]).removeClass('unactive_step'); /* <= la deuxiéme d'ici ? */
		$('#'+process[0][index_step_suivant]).addClass('active_step');
		$('#'+'step_'+process[1][index_step_suivant][index_sous_step_suivant]).css('color : #111111');
	}
}


Je suis malheuresement obligé de rendre mon projet compatible IE7, et je trouve mon code "pas trop à jetter". Là je ne vois pas comment faire pour que c'te foutu logiciel de microsoft comprenne mon java, je m'en remets à vous !

Ah oui j'oubliais : j'utilise Jquery, ça m'évite de mettre le fastidieux document.getElementsById et de rajouter des effets kikoos à mon projet x) (Sans oublier le XMLHttpRequest)
[Asphel]
A voir également: