JAVASCRIPT if (a<b) ne fonctionne pas..

Résolu/Fermé
prosciuto145 Messages postés 92 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 7 septembre 2009 - 25 juil. 2008 à 10:47
prosciuto145 Messages postés 92 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 7 septembre 2009 - 25 juil. 2008 à 11:56
Bonjour,

J'ai créer une fonction JS et je ne comprend pas pourquoi elle ne fonctionne pas :(

J'ai deux champs:
un champs qui me sert a avoir un nombre d'emplacement défini,
et un champs qui me sert a "cacher" les emplacements que l'on ne veut pas.

Number of place: <input type="text" id="nbe_split"><br />
Place missing: <input type="text" id="place_missing" onchange="add_semi_colon()">


Maintenant je veux que si un emplacement que l'on ne veut pas, n'existe pas, car le nombre total d'emplacement est inferieur au numero de cet emplacement, renvoyer un méssage d'erreur.
je vous montre:
function add_semi_colon(){
	var la_value;
	var la_item_missing = new Array();
	var la_verif = new Array();
	var ln_nbe = document.getElementById("nbe_split").value;
	var ls_nbe_false = ' ';
	var lb_boolean = true;
	var ln_comp;
	la_item_missing = document.getElementById("place_missing").value;
	la_value = la_item_missing;
	la_item_missing = la_item_missing.split(" ");
	if (la_value.charAt(la_value.length-1) == ';'){
		la_value = la_item_missing.join(";");
	}else{
		la_value = la_item_missing.join(";")+';';
	}
	la_verif = la_value.split(";");


Jusqu'ici ça va, je ne fait que prendre la chaine des éléments à supprimer, et je la sépare en tableau de chaine.
Maintenant, je veux que si un des chiffres est supérieur au nombre total d'emplacement, renvoyer un message d'erreur:
	for (k=0;k<la_verif.length-1;k++){
		if (la_verif[k] > ln_nbe){
			ls_nbe_false += la_verif[k]+' ';
			lb_boolean = false;
		}
	}

Le problème est ici: je demande lorsque la_verif[k] qui est mon nombre à caché est plus grand que le nombre total, je veux ajouter ce nombre a une chaine pour renvoyer un message d'erreur plus tard.

Le problème est que ça le fait tout le temps. Même quand le nombre est plus petit...
donc si vous m'avez suivit, c'est le
if (la_verif[k] > ln_nbe){
qui décone je crois.
le reste de la fonction est la:
	if (lb_boolean == false){
		if (ls_nbe_false.split(" ").length == 1){
			alert("You must only delete a location which exist:\n - Number of location: "+ln_nbe+".\n - This location is wrong: "+ls_nbe_false);
		}else{
			alert("You must only delete a location which exist:\n - Number of location: "+ln_nbe+".\n - This locations are wrong: "+ls_nbe_false);
		}
		//return;
	}
	document.getElementById("place_missing").value = la_value;
}


Si vous voyez une érreur ou plus, je serais heureux d'en etre averti.

Je vous remercie par avance de vos réponse.
A voir également:

2 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
25 juil. 2008 à 11:18
Bonjour,

Je pense que ton problème est du au fait que la_verif est un tableau de String, donc la_verif[index] est une string et non un entier! Attention donc! :) Pour cette raison, la_verif[index] est toujours plus grand que ton chiffre de comparaison.

La solution est donc de récupérer la valeur entière de la_verif[index] puis ensuite de comparer avec ton chiffre. Pour ce faire utiliser la méthode 'parseInt' comme indiquer ici :
https://www.commentcamarche.net/contents/588-javascript-les-variables#parseint

Ce qui te donnera :
for (k=0;k<la_verif.length-1;k++){
		if ( parseInt(la_verif[k]) > ln_nbe ){
			ls_nbe_false += la_verif[k]+' ';
			lb_boolean = false;
		}
	}


Si ça ne vient pas de là je ne sais pas.
0
prosciuto145 Messages postés 92 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 7 septembre 2009 24
25 juil. 2008 à 11:56
Merci,

je me doutais que c'était cela mais je ne trouvais/connaissais pas la fonction ....

je pensais que JS faisais la translation automatiquement, mais ça aurait été trop beau ^^

Sujet résolut :)

En tout cas, merci, ça fait quand même 2 heures que je cherche à cause de ça... ^^

Bonne continuation.
0