<!DOCTYPE html> <html lang="fr" <head> <meta charset="utf-8"> <title>EXO</title> </head> <body> <div class="form-inline"> <input type="text" id="formule"> <input type="button" value="calculer" onclick="start();"> <div style='margin-top:10px;margin-left:5px;height:25px;width:250px;background-color:#fbef7b;'> <label>Résultat</label> <span id="resultat"></span> </div> </div> <script type="text/javascript"> var element = { 'H':1 ,'HE':4 ,'Li':7 }; function start(){ var formule=document.getElementById('formule').value; console.log('Formule : ' + formule); //je fais un exemple avec une seule valeur... //si tu entres plusieurs "valeurs" dans ton champ formule.. faudra boucler sur chaque valeur.. (je te laisserai chercher ce point !) var result = getElementValue(formule); console.log(result); //affichage du réltat document.getElementById('resultat').innerHTML = result; } function getElementValue(valToCheck){ if(typeof(valToCheck)!='undefined' && valToCheck!=null){ if(element.hasOwnProperty(valToCheck)){ return element[valToCheck]; }else{ return 0; } } } </script> </body> </html>
Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche
56682 internautes nous ont dit merci ce mois-ci
var atoms = { H: 1.00794, He: 4.002602, Li: 6.941, Be: 9.012182, B: 10.811, C: 12.011, O: 15.9994, F: 18.9984032, Ne: 20.1797, Na: 22.989770, Mg: 24.3050, Al: 26.981539, Si: 28.0855, P: 30.973762, S: 32.066, Cl: 35.4527, Ar: 39.948, K: 39.0983, Ca: 40.078, Sc: 44.95591, Ti: 47.88, V: 50.9415, Cr: 51.9961, Mn: 54.93805, Fe: 55.847, Co: 58.9332, Ni: 58.69, Cu: 63.546, Zn: 65.39, Rb: 85.4678 }; document.getElementById('calculate').addEventListener('click', () => { let formula = document.getElementById('formula').value; document.getElementById('resultat').innerHTML = ""; if (formula) { formula = formula.split(' '); // La formule doit avoir des espaces entres chaque types let totalMass = 0; // On commence par une masse de zéro for (let atom in atoms) for (let i = 0; i < formula.length; i++) if (formula[i] == atom) totalMass += atoms[atom]; // On additionne les masses atomiques de la formule document.getElementById('resultat').innerHTML = totalMass; } else console.error('La formule est vide!'); });
var atoms = { H: 1.00794, He: 4.002602, Li: 6.941, Be: 9.012182, B: 10.811, C: 12.011, O: 15.9994, F: 18.9984032, Ne: 20.1797, Na: 22.989770, Mg: 24.3050, Al: 26.981539, Si: 28.0855, P: 30.973762, S: 32.066, Cl: 35.4527, Ar: 39.948, K: 39.0983, Ca: 40.078, Sc: 44.95591, Ti: 47.88, V: 50.9415, Cr: 51.9961, Mn: 54.93805, Fe: 55.847, Co: 58.9332, Ni: 58.69, Cu: 63.546, Zn: 65.39, Rb: 85.4678 }; document.getElementById('calculate').addEventListener('click', () => { var totalMass = 0; // On commence par une masse de zéro document.getElementById('resultat').innerHTML = ""; var formula = document.getElementById('formula').value; console.log('formula :'+formula); if (typeof(formula)!='undefined' && formula!=null){ var splitformula = formula.split(' '); // La formule doit avoir des espaces entres chaque types for (var i=0 ; i< splitformula.length;i++){ //on boucle sur la formule var F = splitformula[i]; console.log('F : '+F); var Mass = parseFloat(getElementValue(F)); //on va chercher la valeur correspondante console.log('Mass : '+Mass); totalMass += Mass; // On additionne les masses atomiques de la formule } console.log(totalMass); document.getElementById('resultat').innerHTML = totalMass; } else { console.error('La formule est vide!'); } }); function getElementValue(valToCheck){ if(typeof(valToCheck)!='undefined' && valToCheck!=null){ if(atoms.hasOwnProperty(valToCheck)){ return atoms[valToCheck]; }else{ return 0; } } }
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>Atomtom&nana</title> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> <style> #resultat{ font-size: 16px; text-align:center: padding:10px; width:180px; background-color:#b0eaac; } </style> </head> <body> <input type="text" id="formula" value="H He"> <input type="button" id="calculate" value="go"> <div id="resultat"></div> <script type="text/javascript"> var atoms = { H: 1.00794, He: 4.002602, Li: 6.941, Be: 9.012182, B: 10.811, C: 12.011, O: 15.9994, F: 18.9984032, Ne: 20.1797, Na: 22.989770, Mg: 24.3050, Al: 26.981539, Si: 28.0855, P: 30.973762, S: 32.066, Cl: 35.4527, Ar: 39.948, K: 39.0983, Ca: 40.078, Sc: 44.95591, Ti: 47.88, V: 50.9415, Cr: 51.9961, Mn: 54.93805, Fe: 55.847, Co: 58.9332, Ni: 58.69, Cu: 63.546, Zn: 65.39, Rb: 85.4678 }; document.getElementById('calculate').addEventListener('click', () => { var previousVal = null; var previousValType = null; var totalMass = 0; // On commence par une masse de zéro document.getElementById('resultat').innerHTML = ""; var formula = document.getElementById('formula').value; console.log('formula :'+formula); if (typeof(formula)!='undefined' && formula!=null){ var splitformula = formula.split(' '); // La formule doit avoir des espaces entres chaque types splitformula.reverse(); //on inverse l'ordre de l'array pour faciliter le calcul. for (var i=0 ; i< splitformula.length;i++){ //on boucle sur la formule var F = splitformula[i]; console.log( i + "==>> F : "+F); var Mass = parseFloat(getElementValue(F)); //on va chercher la valeur correspondante if(Mass !=null && typeof(Mass)!='undefined' && !isNaN(Mass)){ //console.log('Mass : '+Mass); //console.log('previousVal : ' + previousVal); if(previousValType != "stoechio"){ totalMass += Mass; // On additionne les masses atomiques de la formule previousValType = null; previousVal = 0; }else{ totalMass += parseFloat(previousVal * Mass); previousValType = null; previousVal = 0; } }else if(Number.isInteger(parseInt(F))){ //si par contre c'est un nombre... console.log("F est un nombre : " + F); previousVal = parseInt(F); previousValType = "stoechio"; }else{ previousValType = null; previousVal = 0; console.log("Valeur inconnue ("+F+") : Ce n'et ni un nombre, ni une valeur du tableau connue.."); } } document.getElementById('resultat').innerHTML = totalMass; } else { alert('La formule est vide!'); } }); function getElementValue(valToCheck){ if(typeof(valToCheck)!='undefined' && valToCheck!=null){ if(atoms.hasOwnProperty(valToCheck)){ return atoms[valToCheck]; }else{ return null; } } } </script> </body> </html>
var strToSplit = "H2OHe3"; var splitStr = strToSplit.split(/(?=[A-Z]|\d)/); console.log(splitStr);
var splitformula = formula.split(' ');
//on vire les éventuels espaces au cas où la personne aurait écrit : H 2 O He 3 formula= formula.replace(/ /g,''); //on split sur les majuscules + les chiffres (ne fonctionne qu'avec des nombre <10 ) var splitformula = formula.split(/(?=[A-Z]|\d)/);
https://drive.google.com/open?id=1ylFvvcJjjt71La1STMWGXBW730TnOHW2
En gros j'aimerais divisé la chaine de caractère en un tableau grace à "split()" en fonction des atomes présent dans le tableau element, mais j'ai l'impression que ça ne fonctionne pas trop :c