begin process at 2012 05 29 07:32:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Comparaison qui ne fonctionne pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comparaison qui ne fonctionne pas

mercredi 28 juillet 2010 à 18:43:01 | Comparaison qui ne fonctionne pas

KaiHo

Bonjour,

Je fais appel à vous parce que je ne suis pas un expert en javascript (qui a dit que je débutais ?) et je sèche sur un problème qui me paraissait pourtant simple à la base.

Voilà, j'ai un formulaire avec un select, un bouton et un champ vers lequel je dirige la sélection du select. Et j'ai deux champs supplémentaires avec les valeurs minimum et maximum que je peux placer.

Code PHP :
echo"<table border=0>
		<tr>
			<td>
				<select   name='sel' id='sel' class='Liste' onclick='choix(this);' onchange='choix(this);' size=6>
  					<option>$val1</option>
  					<option>$val2</option>
  					<option>$val3</option>
  					<option>$val4</option>
  					<option>$val5</option>
  					<option>$val6</option>
				</select>
				<div style='display:none;'>
					<select  name='sel2' id='sel2' class='Liste' onclick='choix(this);' onchange='choix(this);' size=6>
						<script type='text/javascript'>
							var sel=document.getElementById('sel');
							var sel2=document.getElementById('sel2');
							var saisie=document.getElementById('saisie');
							for ( var n=0;n<sel.length;n++)
								{  
								document.writeln('<option>'+(n+1)+'</p></option>');  
								}
						</script>
					</select>
				</div>
				</td>
				        <td>
                                                <center>
						<input  type='button' value='>>>' class='Bouton' onclick='ajouter();'><br>
						<input  type='button' value='<<<' class='Bouton' onclick='retirer();'>
                                                </center>
					</td>
					<td>
						<input type='text'  name='champ1' id='champ1' class='Liste' size='2' readonly='readonly' value=''>
							<SCRIPT LANGUAGE='JavaScript'>
								var champ1=document.getElementById('champ1');
							</SCRIPT>
					</td>
					<td>
						<input type='text'  name='val_min' id='val_min' class='Liste' size='2' readonly='readonly' value='$val_min'>
							<SCRIPT LANGUAGE='JavaScript'>
								var val_min=document.getElementById('val_min');
							</SCRIPT>
							&nbsp;
						<input type='text'  name='val_max' id='val_max' class='Liste' size='2' readonly='readonly' value='$val_max'>
							<SCRIPT LANGUAGE='JavaScript'>
								var val_max=document.getElementById('val_max');
							</SCRIPT>
							</center>
					</td>
				</tr>
                        </table>";


Pour moi, tout se passe dans la fonction ajouter().

Code Javascript :
	function ajouter()
		{
		
		if ( sel.selectedIndex >=0 )
  			{
			if ((sel[sel.selectedIndex].text<val_min.value) || (sel[sel.selectedIndex].text>val_max.value))
				{
				alert('Aïe');
				}
			else
				{
				if (champ1.value=='')
					{
					champ1.value=sel[sel.selectedIndex].text;
					supprime();
					}
				else
					{
					saisie.value=champ1.value;
					champ1.value=sel[sel.selectedIndex].text;
					supprime();
					ajout(0);
					}
				}
			}
		}


Malheureusement, quelque soit la valeur sélectionnée (sel[sel.selectedIndex].text), j'obtiens mon alerte (aïe).

J'ai bien intercalé une alerte pour vérifier
Code Javascript :
alert('valeur :'+sel[sel.selectedIndex].text + ' et ' + val_min.value + ' et ' + val_max.value);)

J'obtiens bien les bonnes valeurs.

Qu'est-ce que j'ai manqué ?

Tout le reste de mon script est bon, après de longues heures de boulot, mais là, je sèche !

Merci d'avance !
jeudi 29 juillet 2010 à 14:08:38 | Re : Comparaison qui ne fonctionne pas

KaiHo

Personne pour m'aider ?
jeudi 29 juillet 2010 à 16:04:47 | Re : Comparaison qui ne fonctionne pas

KaiHo

La persévérance payant, j'ai enfin trouvé l'erreur...

En effet, mes variables (sel[sel.selectedIndex].text, val_min.value et val_max.value) étaient de type "string".

Un petit parseInt(), et le tour est joué.

Ca donne quelque chose du genre
Code Javascript :
	function ajouter()
		{
                var sel_number=parseInt(sel[sel.selectedIndex].text);
                var val_min_number=parseInt(val_min.value);
                var val_max_number=parseInt(val_max.value);
		
		if ( sel.selectedIndex >=0 )
  			{
			if ((sel_number<val_min_number) || (sel_number>val_min_number))
				{
				alert('YOUPI !');
				}
			else
				{
				if (champ1.value=='')
					{
					champ1.value=sel[sel.selectedIndex].text;
					supprime();
					}
				else
					{
					saisie.value=champ1.value;
					champ1.value=sel[sel.selectedIndex].text;
					supprime();
					ajout(0);
					}
				}
			}
		}



Merci qui ?
jeudi 29 juillet 2010 à 19:01:41 | Re : Comparaison qui ne fonctionne pas

PetoleTeam

Membre Club
Bonjour,
La persévérance payant, j'ai enfin trouvé l'erreur...
comme très souvent !

...effectivement lorsque que l'on veut comparer des nombres il est préférable récupérer les données via le parseInt.
Cela marche avec les String, mais avec des surprises du type "15" est inférieur à "2".

...je ne suis pas un expert en javascript ...
il n'est pas nécessaire de l'être pour pratiquer, mais si je puis me mettre quelques conseils...

- d'abord
Code Javascript :
<SCRIPT LANGUAGE="JavaScript">
est déprécié
il est préférable de mettre
Code Javascript :
<script type="text/javascript">

- regroupes les différents passages javascript au même endroit entre les balises SCRIPT, plutôt que de le parsemer dans ton code...le mieux étant un fichier externe de la sorte
Code Javascript :
<script type="text/javascript" src="function.js"></script>


- concernant ta fonction, fait les récupérations après le test sur le selectedIndex, cela évitera l'erreur si appui sur bouton sans qu'une sélection ne soit faite.
Code Javascript :
function ajouter() {
  if (sel.selectedIndex >-1) {
    var sel_number     = parseInt(sel[sel.selectedIndex].text);
    var val_min_number = parseInt(val_min.value);
    var val_max_number = parseInt(val_max.value);

    if ((sel_number < val_min_number) || (sel_number > val_min_number)) {
      alert('YOUPI !');
    }
    else {
      if (champ1.value == '') {
        champ1.value = sel[sel.selectedIndex].text;
        supprime();
      }
      else {
        saisie.value = champ1.value;
        champ1.value = sel[sel.selectedIndex].text;
        supprime();
        ajout(0);
      }
    }
  }
}


pourquoi écrire cela dans ton code
Code Javascript :
for (var n = 0; n < sel.length; n++) {
  document.writeln('<option>' + (n + 1) + '</p></option>');
}
et ne pas le faire directement en PHP ?

bonne continuation !!
;O)
vendredi 30 juillet 2010 à 13:21:23 | Re : Comparaison qui ne fonctionne pas

KaiHo

Merci pour tes conseils.

J'ai donc commencé par modifier
Code Javascript :
<script type="text/javascript">

Mais lorsque j'ai voulu mettre tout le javascript dans un fichier, plus rien ne fonctionne.

Code Javascript :
<SCRIPT language='text/Javascript' src='../function.js'></SCRIPT>


J'ai donc créé un fichier "function.js" avec tout mon code à l'intérieur, mais rien ne fonctionne.

J'aurais pu oublier quelque chose ?
vendredi 30 juillet 2010 à 13:23:24 | Re : Comparaison qui ne fonctionne pas

KaiHo

Ah, et pour ça
Code Javascript :
for (var n = 0; n < sel.length; n++) {
  document.writeln('<option>' + (n + 1) + '</p></option>');
}
C'est juste que j'ai pris le code sur le site et je n'ai modifié que le strict nécessaire !
vendredi 30 juillet 2010 à 13:34:49 | Re : Comparaison qui ne fonctionne pas

KaiHo

Alors là, moi, je ne comprends plus rien
Code Javascript :
<script type='javascript'>
Fonctionne

Code Javascript :
<script type='text/javascript'>
ne fonctionne pas


Une explication ? Pour moi, ça ne change évidemment rien, mais bon !
vendredi 30 juillet 2010 à 18:06:08 | Re : Comparaison qui ne fonctionne pas

PetoleTeam

Membre Club
Bonjour,
quelque recommandations
un fichier javascript, .js, ne doit contenir que du code, pas de balise SCRIPT.

Il existe plusieurs son de cloches, au figuré bien sûr, pour le positionnement de l'inclusion du fichier JS via les balises SCRIPT.

Dans ton cas, si j'ai bien suivi tu initialises des variables qui représentent les objets auxquels tu accèdes, la meilleur position serait juste avant la balise de fin de BODY, comme cela tu ne généreras pas d'erreur du type n'est pas un objet ou est null.

Quant au dernier problème que tu rencontres, cela me parle, mais ne l'ai pas personnellement reproduit pour comprendre le pourquoi, peut être un problème avec le DOCTYPE et qui plus est fonction du navigateur.

Quoiqu'il arrive privilégies le text/javascript.

Dernier point lorsque tu écris src='../function.js', cela veut dire que le fichier n'est pas dans le même répertoire mais dans le répertoire parent.

Pour vraiment finir je te mets 2 liens
Comment bien coder en Javascript ?
et Bonnes pratiques javascript

il en existe sûrement bien d'autres...

;O)


Cette discussion est classée dans : code, sel, var, document, value


Répondre à ce message

Sujets en rapport avec ce message

recharger les variables suite à un reload [ par goyave ] bonjour suite à un changement de machine et de prog je me trouve confronté à un probleme enervant j'ai un formulaire avec les champs [code=autre]nom L'élément document et le reste... [ par alexflex25 ] Bonjour, En désespoir de cause je viens vous demander de l'aide une n-ème fois. Soit la class javascript suivante : [code=js] var alerting = Class.cr variables / document. / concaténation [ par BlizarBlizar ] Bonjour ! j'ai un problème qui vient surement de la syntaxe de mon code, je m'explique : comment faire pour avoir : [code=js]var titre=document.no entete setRequestHeader envoi de fichier [ par ju0123456789 ] Bonjour, J'ai un script : [code=js]function AjoutePhoto() { var sel = document.getElementById('inser_photo'); if( sel != null ) { do transférer la valeur d'un text field à un autre [ par jimmyhendrix ] Salut ! J'essaie de me monter un genre de formulaire php pour passer une commande sur mon site internet. Le code php fonctionne très bien, mais mon c Problème substr syntaxe javascript [ par deneb92 ] Bonjour, j'ai une question toute bête : je cherche à remplir une cellule avec le bout d'une autre cellule. Dans la première , je sélectionne la ville concaténation variables ... [ par mageek06 ] Bonjour j'ai ceci : [code=js]var date1j = document.getElementById("date1j"); var date1m = document.getElementById("date1m"); var date1a = document. Affiché valeur checkbox/radio si coché [ par amine38 ] Bonjour ! voilà j'ai un petit travail à faire et je ne parviens pas à résoudre mon problème : Je souhaite affiché la valeur des radios et checkbox co Creer un formulaire de calcul [ par quinton75 ] Bonjour, J'essaie de crée un formulaire qui multiplie le nombre de place par le prix mais ça ne fonctionne pas [^^sad2][^^sad2] [code=js] func zoom - image ET commentaires [ par Villa Flore ] Bonjour, Je cherche à faire des zooms sur des miniatures. J'utilise le très bon script suivant : ----------------------------------------------------


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales