Aide fonction find vs form

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
anthony613
Messages : 3
Enregistré le : 16 oct. 2021, 17:12

Aide fonction find vs form

Message par anthony613 » 16 oct. 2021, 17:16

Bonjour,

Je cherche à remplacer dans ce code la source de : item.id == '1' donc du 1 par ce qui provient de <input type="text" id="somme" value=""/>

Quand la personne met une valeur dans la form somme, cette valeur va chercher l'ID correspondant et trouve la valeur name. Ensuite utilise cette valeur user.name pour les calculs

Merci de votre aide

Code : Tout sélectionner

<!DOCTYPE html>
<html>
<head>

<script language="JavaScript" type="text/javascript">
function AFFICHE(calcul){

var somme = document.getElementById('somme').value;//saisie utilisateur
//on remplace la virgule par un point
somme = somme.replace(",",".", somme);
//on teste si la valeur est numérique
if (isNaN(somme))
{
alert("Le nombre doit être numérique");
return false;
}

//tout est ok
else
var calcul1 = ((user.name)*somme);//réponse 1
var calcul2 =(5700/2900)*calcul1;//réponse 2
var calcul3 = (1400/2900)*calcul1;//réponse 3

//Affiche le résultat dans "mon_div"
document.getElementById('mon_div').innerHTML = 'Saisie utilisateur : '+somme+'<br/>Calcul 1 : '+calcul1+'<br/>Calcul 2 : '+calcul2+'<br/>Calcul 3 : '+calcul3+'';
}

// test recherche ID
let users = [
{id: 1, name: 3},
{id: 2, name: 4},
{id: 3, name: 5}
];

let user = users.find(item =>item.id == '1');

</script>

</head>

<body>

<form id="form" name="form">
<input type="text" id="somme" value=""/>
<input type="button" value="go" onclick="javascript:AFFICHE();">
</form>

<div id="mon_div"></div>

</body>
</html>

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Aide fonction find vs form

Message par webmaster » 16 oct. 2021, 19:43

Bonjour

J'ai du mal à comprendre le besoin et le choix des noms des propriétés n'aide pas

La somme doit correspondre à l'ID ?
Pourquoi le name est multiplié par la somme ?
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

anthony613
Messages : 3
Enregistré le : 16 oct. 2021, 17:12

Re: Aide fonction find vs form

Message par anthony613 » 16 oct. 2021, 20:15

Bonjour, merci de ton suivi. J'ai modifié un peu le script pour le simplifier et changer les noms de propriétés

Ce que je recherche dans le calcul est de pouvoir calculer une valeur en fonction d'une variable. C'est plus côté aviation sur le calcul de carburant.

Exemple :
1 kg d'essence correspond à un centre de gravité de 180 m
2 kg d'essence correspond à un centre de gravité de 190 m
3 kg d'essence correspond à un centre de gravité de 200 m
...

Comme le centre de gravité est variable en fonction du poids, il faut que la valeur en kg d'essence que l'utilisateur entre dans la cellule puisse aller chercher sa valeur correspondante.

Exemple du calcul :
  • Si l'utilisateur entre comme valeur de 1kg, le calcul devra se faire automatiquement pour 1*180 = résultat de 180 kg-m
  • Si l'utilisateur entre comme valeur de 2kg, le calcul devra se faire automatiquement pour 1*190 = résultat de 380 kg-m
  • Si l'utilisateur entre comme valeur de 3kg, le calcul devra se faire automatiquement pour 1*200 = résultat de 600 kg-m
et ainsi de suite.

donc ma formule selon le code ci-dessous est : valeur_utilisateur * ref_valeur_poids * = xx kg-m
où la ref_valeur_poids correspond au id_valeur_poids en fonction de ce que l'utilisateur à mis dans valeur_utilisateur

actuellement, j'ai mis une valeur fixe de 3 : item.id_valeur_poids == '3' cependant, cette valeur devrait intérargir en fonction de valeur_utilisateur. Ce que je n'arrive pas à intégrer.

J'espère que c'est plus clair :)
Merci

Code : Tout sélectionner

<!DOCTYPE html>
<html> 
<head> 

<script language="JavaScript" type="text/javascript"> 
function AFFICHE(calcul){ 

 var valeur_utilisateur = document.getElementById('valeur_utilisateur').value;//saisie utilisateur 
 //on remplace la virgule par un point 
 valeur_utilisateur = valeur_utilisateur.replace(",",".", valeur_utilisateur);  
 //on teste si la valeur est numérique 
 if (isNaN(valeur_utilisateur)) 
 { 
  alert("Le nombre doit être numérique"); 
  return false; 
 }  
 //tout est ok 
    else 
 var calcul1 = ((ref_valeur_poids.valeur_poids)*valeur_utilisateur);//réponse 1  

 //Affiche le résultat dans "mon_div" 
 document.getElementById('mon_div').innerHTML = 'Saisie utilisateur : '+valeur_utilisateur+'<br/>Calcul 1 : '+calcul1+'<br/>';  
} 


// test recherche du poids vs le ID
            let poids = [
              {id_valeur_poids: 1, valeur_poids: 180},
              {id_valeur_poids: 2, valeur_poids: 190},
              {id_valeur_poids: 3, valeur_poids: 200}
            ];

            let ref_valeur_poids = poids.find(item => item.id_valeur_poids == '3');

</script> 

</head> 

<body> 

<form id="form" name="form"> 
<input type="text" id="valeur_utilisateur" value=""/>  
<input type="button" value="go" onclick="javascript:AFFICHE();"> 
</form> 

<div id="mon_div"></div> 

</body> 
</html>

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Aide fonction find vs form

Message par webmaster » 17 oct. 2021, 08:31

Ok, je comprends mieux le besoin :)

Voici ma proposition sur la base du script initial :

Code : Tout sélectionner

<!DOCTYPE html>
<html> 
<head> 

<script language="JavaScript" type="text/javascript"> 

/* Je préfère placer les données en tete de script pour les retrouver facilement */
let poids = [
              {id_valeur_poids: 1, valeur_poids: 180},
              {id_valeur_poids: 2, valeur_poids: 190},
              {id_valeur_poids: 3, valeur_poids: 200}
            ];



function AFFICHE(calcul){ 

 var valeur_utilisateur = document.getElementById('valeur_utilisateur').value;//saisie utilisateur 
 //on remplace la virgule par un point 
 valeur_utilisateur = valeur_utilisateur.replace(",",".", valeur_utilisateur);  
 //on teste si la valeur est numérique 
 if (isNaN(valeur_utilisateur)) 
 { 
  alert("Le nombre doit être numérique"); 
  return false; 
 }  
 /* Pas besoin de else avec le return */
 
// test recherche du poids vs le ID
let ref_valeur_poids = poids.find(item => item.id_valeur_poids == valeur_utilisateur);

 var calcul1 = ((ref_valeur_poids.valeur_poids)*valeur_utilisateur);//réponse 1  

 //Affiche le résultat dans "mon_div" 
 document.getElementById('mon_div').innerHTML = 'Saisie utilisateur : '+valeur_utilisateur+'<br/>ref_valeur_poids : '+JSON.stringify(ref_valeur_poids)+'<br>Calcul 1 : '+calcul1+'<br/>';  
} 

</script> 
</head> 

<body> 
<form id="form" name="form"> 
<input type="text" id="valeur_utilisateur" value=""/>  kg essence
<input type="button" value="go" onclick="javascript:AFFICHE();"> 
</form> 
<div id="mon_div"></div> 
</body> 
</html>
La difficulté à l'usage sera de trouver le bon poids du tableau avec la saisie utilisateur.
Je ne connaissais pas bien .find() je vais approfondir ça et l'ajouter sur le site
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

anthony613
Messages : 3
Enregistré le : 16 oct. 2021, 17:12

Re: Aide fonction find vs form

Message par anthony613 » 20 oct. 2021, 00:31

Bonjour,
Désolé du délai, je pensais que mon message avait répondu mais ça n'a pas l'air..
Avec ta méthode, cela fonctionne. Merci :)
As-tu une méthode plus simple avec comme poids par exemple : fuelStationCG: {180,190,200}, où 180 est l'index 1 et ....

Anthony

Répondre