Comportement programme erratique !!!

Fermé
BerCalva Messages postés 5 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 11 juillet 2014 - 11 juil. 2014 à 08:47
dan-b Messages postés 80 Date d'inscription samedi 15 septembre 2012 Statut Membre Dernière intervention 20 octobre 2014 - 11 juil. 2014 à 14:44
Bonjour,

Code partiel fonctionne bien (première partie), mais réintégré dans le programme d'ensemble, rien ne va plus (2° partie) ???Incompréhensible !!!
Bonjour, (Configuration: Windows 7 / Firefox 30.0)
Bien repris mon code, et j'ai un nouveau drôle de problème, un code partiel qui marche bien..
Partie 1 :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<script>
type="text/javascript"; src="E:\Komposer\Kompozer 0.7.10\TESTS_KOMPOSER\Tarif_horaire.js"></script>
<title>Calcul de Taux_horaire en JS</title>
<meta content="Pothier Bernard" name="author">
<!-- Traitement du calcul du Taux_horaire en JavaScript --><!-- Déclaration et initialisation de variables -->
<script>
var PrixPar="14.56"; var PrixArt="15.82";
var PrixAdm="16.44";
var Travail="";
var Activite="";
var Taux_horaire="0";
function travail() {
Travail="Entretien de jardin";
Activite="Artisan";
if(((Travail=="Ménage") || (Travail=="Repassage")) && (Activite=="Particulier")) { Taux_horaire=PrixPar/2;}
if (((Travail=="Ménage") || (Travail=="Repassage")) && ((Activite=="Association") || (Activite=="Collectivité"))) { Taux_horaire=PrixPar;}
if ((Activite=="Association") || (Activite=="Collectivité") || (Activite=="Particulier")) { Taux_horaire=PrixPar;}
if ((Activite=="Artisan") || (Activite=="Commerçant") || (Activite=="TPE")) { Taux_horaire=PrixArt;}
if ((Activite=="Industrie") || (Activite=="Administration")) { Taux_horaire=PrixAdm;}
} </script>
</head>
<body
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 225); direction: ltr;"
alink="#000088" link="#0000ff" vlink="#ff0000">
<h1 style="color: blue; text-align: center;"><big>Calcul
du Taux Horaire</big></h1>
<hr>
<br>
<script>
travail();
document.write('Le Travail attendu est ' + Travail);</script>
<br>
<hr>
<br>
<script>
document.write('Votre activité est ' + Activite);</script>
<br>
<br>
<br>
<script>
document.write('Votre Taux Horaire est de ' + Taux_horaire);</script>
</body>
</html>

Mais remis dans son cadre plus général, qui me fait des facécies... incompréhensibles bien sûr, j'y ai passé l'après midi... par beau temps aujourd'hui en Normandie, rare !!!
Partie 2 :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<script>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
type="text/javascript" src="utils.js"></script>
<meta name="author" content="BerCalva14"
http-equiv="content-type">
<title>Choix Liste Déroulante</title>
<script>
PrixPar=14.56; <!-- Chaque variable DOIT commencer par une LETTRE MAJUSCULE !!! -->
PrixArt=15.64; <!-- Si le "var" manque à la déclaration de variable, alors la variable est GLOBALE, accessible de tout point du programme ! -->
PrixAdm=16.84; <!-- point virgule après chaque ligne de commande en JS -->
Tauxhoraire="";
Travail1="a";<!-- Si le "var" manque à la déclaration de variable, alors la variable est GLOBALE, accessible de tout point du programme ! -->
Activite="b";
<!-- Si le "var" manque à la déclaration de variable, alors la variable est GLOBALE, accessible de tout point du programme ! -->
function confirme(){ alert("Vos choix sont enregistrés.... Passons au calcul.. !");
}
function updated1(element)
{
var idx=element.selectedIndex;
var val=element.options[idx].value;
var content1=element.options[idx].innerHTML;
alert("Le Travail demandé est : " + content1);
Travail1=content1;
}
function updated2(element)
{
var idx=element.selectedIndex;
var val=element.options[idx].value;
var content2=element.options[idx].innerHTML;
alert("Votre activité est : " + content2);
Activite=content2;
}
<!-- Traitement du calcul du Tauxhoraire en JavaScript -->
<!-- -->
function travail() {
if(((Travail1=="Ménage") || (Travail1=="Repassage")) && (Activite=="Particulier")) { Tauxhoraire=PrixPar/2;}
if (((Travail1=="Ménage") || (Travail1=="Repassage")) && ((Activite=="Association") || (Activite=="Collectivité"))) { Tauxhoraire=PrixPar;}
if ((Activite=="Association") || (Activite=="Collectivité") || (Activite=="Particulier")) { Tauxhoraire=PrixPar;}
if ((Activite=="Artisan") || (Activite=="Commerçant") || (Activite=="TPE")) { Tauxhoraire=PrixArt;}
if ((Activite=="Industrie") || (Activite=="Administration")) { Tauxhoraire=PrixAdm;}
<!-- alert("Travail commandé : " + Travail1);} -->
<!-- alert("Votre activité est : " + Activite);} -->
alert("Taux horaire dans votre cas : " + Tauxhoraire);}; </script>
</head>
<body direction="ltr"
style="background-color: rgb(255, 240, 240); direction: ltr;">
<br>
<h3
style="text-decoration: underline; color: red; text-align: center;"><big>Simulation
de coût réel horaire selon votre activité et le type de prestation
commandé</big></h3>
<br>
<hr><!-- Introduit une ligne horizontale à ce niveau de la page -->
<h4 style="color: blue; text-align: left;"><big>Choix
de travail demandé</big></h4>
<select name="travail_attendu" onchange="updated1(this)">
<option selected="selected" value="0">Faites votre
choix</option>
<option value="1">Ménage</option>
<option value="2">Repassage </option>
<option value="3">Courses, chauffeur </option>
<option value="4">Préparation de repas </option>
<option value="5">Petit bricolage </option>
<option value="6">Entretien de jardin </option>
<option value="7">Garde d'enfant > 3 ans </option>
<option value="8">Manutention </option>
</select>
<hr align="center" size="4" width="60%">
<h4 style="color: blue; text-align: left;"><big>Choix
d'activité</big></h4>
<select name="activite" onchange="updated2(this)">
<option selected="selected" value="10">Faites votre
choix</option>
<option value="11">Particulier</option>
<option value="12">Association </option>
<option value="13">Collectivité </option>
<option value="14">Artisan </option>
<option value="15">Commerçant </option>
<option value="16">TPE </option>
<option value="17">Industrie </option>
<option value="18">Administration </option>
</select>
<input name="e" value="Lancez le calcul du taux horaire..."
onclick="travail()" type="button"> <br>
<hr>
<hr><br>
<br>
<br>
<br>
<script></script><!-- la commande ci-dessous permet d'imprimer la page dans laquelle on la place...-->
<script>
</script><a href="javascript:window.print()">Imprimer
cette page </a>
<br>
<br>
<!--la commande ci-dessous permet de revenir à la page précédente...--><a
href="javascript:history.back()"> Retour page pécedente</a>
</body>
</html>

1 réponse

dan-b Messages postés 80 Date d'inscription samedi 15 septembre 2012 Statut Membre Dernière intervention 20 octobre 2014 7
11 juil. 2014 à 12:32
Bonjour,

Je vois déjà un problème : les espaces dans les balises options.
La fonction travail ne fonctionnera pas pour ce qui concerne les tests d'égalité. "Administration" est en effet différent de la valeur "Administration " récupérée dans le select

Donc supprimer les espaces dans le html en fin et début de libellé

<option value="11">Particulier</option>
<option value="12">Association</option>
<option value="13">Collectivité</option>
<option value="14">Artisan</option>
<option value="15">Commerçant</option>
<option value="16">TPE</option>
<option value="17">Industrie</option>
<option value="18">Administration</option>

voire utiliser la fonction trim dans js pour être sûr https://www.w3schools.com/jsref/jsref_trim_string.asp

Ce serait mieux certes de comparer sur la valeur "value" du select



Par ailleurs, ce n'est pas bloquant mais je ne comprends pas ce code

<script> 
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
type="text/javascript" src="utils.js"></script>
0
Merci pour ces remarques, j'ai corrigé les espaces inutiles, mais ça ne fonctionne toujours pas dans le programme global pour ménage et Repassage dans le cas "particulier", tout le reste est OK...
Dans le programme partiel dont j'ai mis le code au début de ma réponse, tout fonctionne bien !!!
Pourquoi une seule partie refuse de fonctionner dans le programme complet ???
Là est la question... J'ao essayé *0,5 *0.5 /2 *1/2 rien à faire !!! Help !
0
dan-b Messages postés 80 Date d'inscription samedi 15 septembre 2012 Statut Membre Dernière intervention 20 octobre 2014 7
11 juil. 2014 à 14:41
Il doit y avoir un problème dans les conditions

La division par 2 du taux horaire dans le cas où c'est du ménage ou du repassage Et un particulier n'a jamais lieu car la condition qui suit annule le calcul :

if ((Activite=="Association") || (Activite=="Collectivité") || (Activite=="Particulier")) { Tauxhoraire=PrixPar;}
0
dan-b Messages postés 80 Date d'inscription samedi 15 septembre 2012 Statut Membre Dernière intervention 20 octobre 2014 7
11 juil. 2014 à 14:44
La fonction serait plus claire en utilisant elseif https://www.w3schools.com/js/js_if_else.asp
0