Erreur mais je ne vois pas laquelle

jeremy25150

Habitué
Voici mon code :

[cpp]<fieldset>
<legend><b>Moteurs</b></legend>
<form name="form_moteurI"></form>
Vous souhaitez acheter : <p></p>
<select name="moteurI" onchange="cal_moteurI()">
<option value="moteurI 0 places"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select> d'une valeur de <input type="text" name="prix_moteurI" value="45000000 $"> l'unité <p></p>
</form>Pour un total de <input type="text" name="total_moteurI" value="0">
<HTML>
<HEAD>
</HEAD>
<BODY>
<script>

function cal_moteurI() {
var moteurI=form_moteurI.moteurI.value;
var total_moteurI=moteurI*"45000000"
form_moteurI.total_moteurI.value=total_moteurI;
}
</script>
</form>
</BODY>
</HTML>
[/cpp]

Lorsque que je choisit dans mon formulaire défilant, il y a une erreur qui s'affiche du genre 'form_moteurI.moteurI.value' à la valeur Null ou n'est pas un objet. C'est à la ligne 36.

J'ai déjà tout essayer mais je ne vois vraiment pas où est mon erreur...
 

deathangel67300

Expert
première question, pourquoi ton formulaire n'est pas entre les balise <HTML> et </HTML>

ensuite ton script, tu ne définis pas dans quel langage tu te trouves : <script type="text/javascript">

essaye déjà de vérifier ces deux points
 

jeremy25150

Habitué
revoici mon code :

[cpp]<html>
<fieldset>
<legend><b>Moteurs</b></legend>
<form name="form_moteurI"></form>
Vous souhaitez acheter : <p></p>
<select name="moteurI" onchange="cal_moteurI()">
<option value="moteurI 0 places"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select> d'une valeur de <input type="text" name="prix_moteurI" value="45000000 $"> l'unité <p></p>
</form>Pour un total de <input type="text" name="total_moteurI" value="0">
</HTML>
<HTML>

<HEAD>
</HEAD>
<BODY>
<script type="text/javascript">

function cal_moteurI() {
var moteurI=form_moteurI.moteurI.value;
var total_moteurI=moteurI*"45000000";
form_moteurI.total_moteurI.value=total_moteurI;
}
</script>
</form>
</BODY>
</HTML> [/cpp]

Le message s'affiche toujours...
 

jeremy25150

Habitué
Finalement j'ai réussi a faire ce que je voulais ! tout marche correctement mais me revoilà avec un soucis sur lequel je travaille depuis plus d'une semaine et là je commence sérieusement a abdiquer...

voici mon code :

[cpp]<HTML>
<fieldset>
<legend><b>Outils Aéroport</b></legend>
<form name="form_pistes">
Vous souhaitez acheter
<select name="piste" onchange="cal_pistes ()">
<option value="piste 0 "></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<b>piste(s)</b> d'une valeur de <input type="text" name="pistes" value="1,500,000 $">l'unité, pour un total de :
<input type="text" name="total_pistes" onchange="cal_pistes ()">$</form>
</HTML>
<HEAD>
</HEAD>
<BODY>
<script>

function cal_pistes () {
var pistes=form_pistes.piste.value;
var total_pistes=pistes*"1500000"
form_pistes.total_pistes.value=total_pistes;

}
</script>
</form>
</BODY>
</HTML>

<form name="form_radars">
Vous souhaitez acheter
<select name="radars" onchange="cal_radars ()">
<option value="radar 0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<b>radar(s)</b> d'une valeur de <input type="text" name="radar" value="150,000 $">l'unité, pour un total de :
<input type="text" name="total_radars" onchange="cal_radars ()">$</form>
<HTML>
<HEAD>
</HEAD>
<BODY>
<script>

function cal_radars () {
var radars=form_radars.radars.value;
var total_radars=radars*"150000"
form_radars.total_radars.value=total_radars;

}
</script>
</form>
</BODY>
</HTML>

<hr width="50%">

<form name="form_prix_total_outils">

<font color="#FF0000">Vos outils vous couteront au total : <input type="text" name="prix_total_outils" value="0" onchange="cal_outils ()">$
</font>
</form>
<HTML>
<HEAD>
</HEAD>
<BODY>
<script>

function cal_outils () {
var resultat1=form_radars.total_radars.value;
var resultat2=form_pistes.total_pistes.value;
var prix_total_outils=(parseInt(resultat1,10)+parseInt(resultat2,10))
form_prix_total_outils.value=prix_total_outils
}
</script>
</form>
</BODY>
</HTML>
</fieldset>[/cpp]

Maintenant aucun message s'affiche, là est bien le soucis, j'aimerais bien que la somme des radars + pistes s'affiche dans "prix_total_outils" mais le champ reste toujours à "0" :cry:

Merci d'avance
 

bebRito

Grand Maître
Salut,

Je pense que tu as pas mal de lacunes sur la rédaction de code HTML.
On n'ouvre pas 36 balises <HTML>.
Va sur commentcamarche.net pour connaître la structure de base de ce langage.
Je te conseille également de commenter ton code pour plus de lisibilité et pour te permettre de comprendre réellement ce que tu fais.

En règle générale, voici la structure:
Code:
<!-- début du fichier -->
<HTML>
      <HEAD>...</HEAD>
      <BODY>
         <!-- code à placer ici -->
      </BODY>
</HTML>
<!-- fin du fichier -->

Cependant, pour vérifier un peu ton javascript, si tu utilise Firefox, il y a une console javascript qui te permettra d'évaluer tes expressions javascript et te donnera également les erreurs.
Pour l'ouvrir, menu "Outils" puis "Console d'erreurs" pour <Ctrl>+<Maj>+J
 

zeb

Modérateur
Je propose aussi, pour le débutant, ce lien : par .
Et Pour le très grand débutant, directement celui-ci :
 

jeremy25150

Habitué
Merci beaucoup ! Oui oui je débute mais bon j'arrive a faire pas mal de chose... :D

Je ne pense pas que ce soit les balises <HTML> qui ne font pas fonctionner...

Je vais allez voir le lien de KangOl. Le site du zéro, j'y suis déjà allé mais rien de bien fructueux sur ma demande...

Merci également pour la console d'erreur :sol:
 

marsien

Grand Maître
Non, bien sur... :o
 

zeb

Modérateur
Jeremy, tu programmes en HTML comme un pied. Langage interprété par des navigateurs à très haute tolérance d'erreur, il est toujours possible de voir un résultat, même avec le code le plus pourri qui soit.

Nous ne t'aiderons pas à faire de la merde. Si tu en fais quand même, on va de dire que s'en est. Et on va t'aider à ne plus en faire. Passage obligatoire : ravaler sa fierté, accepter les critiques tant qu'elles restent objectives et constructives, commencer par les bases.

Le lien vers le site du Zéro n'est pas là pour faire joli, mais pour que tu profites de leurs tutoriels pour apprendre à partir de Zéro, puisque tu sembles ne pas connaître la moindre base.

Tu t'addresses à des gens qui programment pour certains depuis de nombreuses années (25 ans pour ma part, pas en HTML, bien sûr ;) ) Alors ne viens pas nous dire que ce n'est pas ici où là qu'est le problème quand pour nous c'est flagrant.

Ici, nous nous entraidons entre développeurs et nous y partageons notre savoir. Les débutants sont acceptés bien volontiers. Mais il faut alors savoir faire un minimum preuve de respect et de modestie - Je n'ai pas dit courbette, soumission ou humiliation, hein !

--------------------------------------------------------------------------

Bon, c'est simple. Tu vas sur le site du Zéro ou sur AlsaCreation, tu commences par les tutos sur le (X)HTML de base et tu deviens dans deux jours, tu seras un autre homme ;)
Tu paries ? :o
 

jeremy25150

Habitué
Bonjour,
je m'excuse pour tout ce que j'ai pu dire, cela ne partait pas d'une mauvaise intention, loin de là.
Le morceau de code que j'ai mis fait parti d'un long code qui lui fonctionne correctement.
Néanmoins pour celui là j'ai fait un copier-coller d'ancien code similaire (qui fonctionne) et malheureusement celui-ci ne veut pas faire l'addition entre les deux champs totaux

revoici mon code un peu amélioré, j'ai déjà mis des repères et supprimés quelques <HTML>

[cpp]<HTML>
<!-- choix du nombres de piste -->
<body>
<fieldset>
<legend><b>Outils Aéroport</b></legend>
<form name="form_pistes">
Vous souhaitez acheter
<select name="piste" onchange="cal_pistes ()">
<option value="piste 0 "></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<b>piste(s)</b> d'une valeur de <input type="text" name="pistes" value="1,500,000 $">l'unité, pour un total de :
<input type="text" name="total_pistes" onchange="cal_pistes ()">$

<!-- calcul du coût des pistes -->
<script>

function cal_pistes () {
var pistes=form_pistes.piste.value;
var total_pistes=pistes*"1500000"
form_pistes.total_pistes.value=total_pistes;

}
</script>
</form>
</BODY>
</HTML>
<HTML>
<!-- choix du nombre de radars -->
<body>
<form name="form_radars">
Vous souhaitez acheter
<select name="radars" onchange="cal_radars ()">
<option value="radar 0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<b>radar(s)</b> d'une valeur de <input type="text" name="radar" value="150,000 $">l'unité, pour un total de :
<input type="text" name="total_radars" onchange="cal_radars ()">$


<!-- calcul du coût des radars -->
<script>

function cal_radars () {
var radars=form_radars.radars.value;
var total_radars=radars*"150000"
form_radars.total_radars.value=total_radars;

}
</script>
</form>
</BODY></HTML>


<hr width="50%">
<HTML><body>
<form name="form_prix_total_outils">

<font color="#FF0000">Vos outils vous couteront au total : <input type="text" name="prix_total_outils" value="0" onchange="cal_outils ()">$
</font>



<!-- calcul du montant total des outils pour l'aéroport -->
<script>

function cal_outils () {
var resultat1=form_radars.total_radars.value;
var resultat2=form_pistes.total_pistes.value;
var prix_total_outils=(parseInt(resultat1,10)+parseInt(resultat2,10))
form_prix_total_outils.value=prix_total_outils
}
</script>
</form>
</BODY>
</HTML>
</fieldset>[/cpp]

Merci d'avance et encore mille fois excusez-moi, je suis un débutant qui souhaite apprendre tout en créant quelques choses d'intéressant tout de suite (peut être pas judicieux) et oui, je fais souvent de la "merde"...
 

marsien

Grand Maître
OK, pas de souci pour être débutant. On l'a tous été un jour :)

La balise <html> et son pendant </html> ne doivent être présent qu'une seule fois par page html ! Elles marquent pour le navigateur le début et la fin du code html... Si tu en laisses plusieurs, rien ne te permet de dir que tout ton code sera interprété, et encore moins en ce qui concerne le javascript.

Je ne veux pas perdre mon temps à chercher une hypothétique erreur, qui ne vient peut-être que du fait que tu ne respectes pas les règles de codage du langage html... donc commence par réécrire ta page html sans qu'il ne reste UNE seule erreur. Tu peux valider ton code sur le site du w3c :

Et si après, ça ne marche toujours pas, tu reviens avec un code propre :)
 

jeremy25150

Habitué
ok merci beaucoup...
Je vais y travailler et lorsque j'aurais un code propre je reviendrais...
 

jeremy25150

Habitué
Voilà,
j'ai réussi a supprimé 55 erreurs sur 58 trouvés, donc reste encore 3 erreurs... ;)
Ma page fonctionne mais il ne veut toujours pas additionner les deux résultats (pistes + radars)

voici de nouveau mon code corrigé :

[cpp]<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<!-- choix du nombres de piste -->
<head>
<title>Outils aéroport</title>
</head>
<body>
<!-- choix du nombres de piste -->
<fieldset><legend><b>Outils Aéroport</b></legend>
<form name="form_pistes" id="form_pistes">Vous souhaitez acheter <select name="piste" onchange="cal_pistes ()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select> <b>piste(s)</b> d'une valeur de <input type="text" name="pistes" value="1,500,000 $" />l'unité, pour un total de : <input type="text" name="total_pistes" onchange="cal_pistes ()" />$
<!-- calcul du coût des pistes -->
<script type="text/javascript">
//<![CDATA[


function cal_pistes () {
var pistes=form_pistes.piste.value;
var total_pistes=pistes*"1500000"
form_pistes.total_pistes.value=total_pistes;

}

//]]>
</script></form>
<!-- choix du nombre de radars -->
<form name="form_radars" id="form_radars">Vous souhaitez acheter <select name="radars" onchange="cal_radars ()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select> <b>radar(s)</b> d'une valeur de <input type="text" name="radar" value="150,000 $" />l'unité, pour un total de :<input type="text" name="total_radars" onchange="cal_radars ()" />$
<!-- calcul du coût des radars -->
<script type="text/javascript">
//<![CDATA[


function cal_radars () {
var radars=form_radars.radars.value;
var total_radars=radars*"150000"
form_radars.total_radars.value=total_radars;

}

//]]>
</script></form>
<hr width="50%" />
<form name="form_prix_total_outils" id="form_prix_total_outils"><font color="#FF0000">Vos outils vous couteront au total : <input type="text" name="prix_total_outils" value="0" onchange=
"cal_outils ()" />$</font> <!-- calcul du montant total des outils pour l'aéroport -->
<script type="text/javascript">
//<![CDATA[


function cal_outils () {
var resultat1=form_radars.total_radars.value;
var resultat2=form_pistes.total_pistes.value;
var prix_total_outils=(parseInt(resultat1,10)+parseInt(resultat2,10))
form_prix_total_outils.value=prix_total_outils
}

//]]>
</script></form>
</fieldset>
</body>
</html>[/cpp]

Si vous trouvez quelquechose, faites moi en part, il peut encore contenir des erreurs....

:hello:
 

marsien

Grand Maître
Faut faire un
Code:
parseInt(pistes, 10) * 1500000;
et
Code:
parseInt(radars, 10) * 150000;

Le parseInt permet de transformer la chaîne de caractères récupérée en un nombre (en base 10). Il ne faut pas de guillemets autour d'un nombre, sinon il devient une chaîne de caractères, ce qui n'est pas pratique pour faire des calculs ;)
 

jeremy25150

Habitué
c'est ce que j'ai fait mais il ne veut toujours pas faire l'addition entre les deux résultats des multiplications...
 

Storos

Modérateur cochon
Staff
Aux lignes 24 et 44, tu as bien remplacé "pistes" par "parseInt(pistes, 10)" et "radars" par "parseInt(radars, 10)"comme te l'a demandé marsien?
 

jeremy25150

Habitué
a la place voici ce que j'ai mis, ça y ressemble :

[cpp]<b>radar(s)</b> d'une valeur de <b><font color="#FF0000">150,000 $</font></b> l'unité, pour un total de <span id="radars"></span>$
<!-- calcul du coût des radars -->
<script type="text/javascript">
//<![CDATA[



function cal_radars (obj) {

var valeur = obj.options[obj.selectedIndex].value;
document.getElementById("radars").innerHTML = valeur*150000;[/cpp]
 

Storos

Modérateur cochon
Staff
Et en remplaçant "valeur*150000" par "parseInt(valeur, 10) * 150000"?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 055
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut