Aide en Javascript SVP
Fermé
Lepetitprince78
Messages postés
248
Date d'inscription
mercredi 3 juin 2015
Statut
Membre
Dernière intervention
2 février 2016
-
30 janv. 2016 à 16:10
Lepetitprince78 Messages postés 248 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 2 février 2016 - 2 févr. 2016 à 01:15
Lepetitprince78 Messages postés 248 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 2 février 2016 - 2 févr. 2016 à 01:15
A voir également:
- Aide en Javascript SVP
- Telecharger javascript - Télécharger - Langages
- Javascript void 0 c'est quoi ✓ - Forum Réseaux sociaux
- Passer variable javascript en php ajax ✓ - Forum PHP
- Convertir vba en javascript ✓ - Forum Javascript
- Echo javascript ✓ - Forum PHP
3 réponses
Bonjour,
un script prêt à l'emploi.
ça ne veux rien dire puisque javascript s'appuie essentiellement sur la manipulation de la page HTML, donc comme la plupart des scripts est particulier à une page, à ce qu'on veut faire...
Toutefois javascript est fortement typé objet(il n'est pas à proprement parler un langage objet comme peuvent l'être certains langage compilés) et posséde tout un tas d'objet.
Un objet est grosso modo une regroupement de fonctions dans un but donné.
Il existe pléthore d'objets(sans parler des API), l'objet date par exemple pour ce que vous voulez faire.
http://www.w3schools.com/jsref/jsref_obj_date.asp
permet de manipuler des dates. Si vous voulez creuser il y a une habitude en développement assez pratique qui est de transformer une date en une valeur numérique décimale, le timestamp linux:
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/now
Il permet de se détacher de la base 60 pour calculer en décimal mais ce n'est qu'une solution pratique et parfois pas nécessaire.
Sinon pour le reste il faut maîtriser les formulaires HTML(pour entrer les durées), l’arithmétique basique(addition, soustraction, division pour obtenir des différences de temps et une moyenne) ainsi que l'affichage dans la page.
Si vous débutez et avez assez de connaissances pour vous pouvez commencer par la gestion de deux nombres que vous additionnez pour obtenir une moyenne puis vous rapprocher du modèle nécessaire de votre programme(en changeant la valeur numérique par une durée, en ajoutant autant de valeurs que vous voulez pour obtenir la moyenne-du coup utilisation de variables sous forme de tableaux la longueur du tableau exprimant le diviseur pour obtenir la moyenne).
En outre javascript est uniquement local au client(l'ordinateur de l'utilisateur par opposition a serveur) et donc il faudra une base de données et son programme de gestion pour pouvoir enregistrer ses valeurs. Là ça sera PHP et MySQL même si le programme javascript vous pouvez le conserver.
un script prêt à l'emploi.
ça ne veux rien dire puisque javascript s'appuie essentiellement sur la manipulation de la page HTML, donc comme la plupart des scripts est particulier à une page, à ce qu'on veut faire...
Toutefois javascript est fortement typé objet(il n'est pas à proprement parler un langage objet comme peuvent l'être certains langage compilés) et posséde tout un tas d'objet.
Un objet est grosso modo une regroupement de fonctions dans un but donné.
Il existe pléthore d'objets(sans parler des API), l'objet date par exemple pour ce que vous voulez faire.
http://www.w3schools.com/jsref/jsref_obj_date.asp
permet de manipuler des dates. Si vous voulez creuser il y a une habitude en développement assez pratique qui est de transformer une date en une valeur numérique décimale, le timestamp linux:
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/now
Il permet de se détacher de la base 60 pour calculer en décimal mais ce n'est qu'une solution pratique et parfois pas nécessaire.
Sinon pour le reste il faut maîtriser les formulaires HTML(pour entrer les durées), l’arithmétique basique(addition, soustraction, division pour obtenir des différences de temps et une moyenne) ainsi que l'affichage dans la page.
Si vous débutez et avez assez de connaissances pour vous pouvez commencer par la gestion de deux nombres que vous additionnez pour obtenir une moyenne puis vous rapprocher du modèle nécessaire de votre programme(en changeant la valeur numérique par une durée, en ajoutant autant de valeurs que vous voulez pour obtenir la moyenne-du coup utilisation de variables sous forme de tableaux la longueur du tableau exprimant le diviseur pour obtenir la moyenne).
En outre javascript est uniquement local au client(l'ordinateur de l'utilisateur par opposition a serveur) et donc il faudra une base de données et son programme de gestion pour pouvoir enregistrer ses valeurs. Là ça sera PHP et MySQL même si le programme javascript vous pouvez le conserver.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
1 févr. 2016 à 15:27
1 févr. 2016 à 15:27
Salut,
Des solutions en ligne existantes :
- https://www.timeanddate.com/date/dateadd.html
- https://www.calculator.net/date-calculator.html
Pour créer sa propre solution en javascript :
- https://www.htmlgoodies.com/html5/javascript/calculating-the-difference-between-two-dates-in-javascript.html#fbid=C3lp2OXMA5g
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates
Bonne journée,
Des solutions en ligne existantes :
- https://www.timeanddate.com/date/dateadd.html
- https://www.calculator.net/date-calculator.html
Pour créer sa propre solution en javascript :
- https://www.htmlgoodies.com/html5/javascript/calculating-the-difference-between-two-dates-in-javascript.html#fbid=C3lp2OXMA5g
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates
Bonne journée,
Lepetitprince78
Messages postés
248
Date d'inscription
mercredi 3 juin 2015
Statut
Membre
Dernière intervention
2 février 2016
9
2 févr. 2016 à 01:15
2 févr. 2016 à 01:15
Bonjour
Oui merci pour vos réponses.
C'est exactement ce que je demandais en faite, est-ce que dans une librairie Javascript je peut trouver les codes qu'il me faut? Je veux additionner heures, minutes, secondes (et non des dates) pour des courses d'endurance comme de vitesse mais je suis pas une "lumière" en maths^^
J'ai trouvé ces quelques codes dont je pourrai m'inspirer peut être, qu'en pensez-vous?
ou
Merci
Oui merci pour vos réponses.
C'est exactement ce que je demandais en faite, est-ce que dans une librairie Javascript je peut trouver les codes qu'il me faut? Je veux additionner heures, minutes, secondes (et non des dates) pour des courses d'endurance comme de vitesse mais je suis pas une "lumière" en maths^^
J'ai trouvé ces quelques codes dont je pourrai m'inspirer peut être, qu'en pensez-vous?
var checkZip = function(zip)
{
zip = zip.replace(/^\s+|\s+$/, '');
if ( zip.length < 5 )
{
alert("Please enter a valid zip code.");
return "";
}
zip = zip.substring(0,5);
if (zip != zip.match(/^[0-9]+$/))
{
alert("Please enter a valid zip code.");
return "";
}
return zip;
};
var autoClicked = function()
{
var zip = document.getElementById("txtZip").value;
zip = checkZip(zip);
if ( zip != "" )
{
var f = document.getElementById("nextInsure");
f.zipcode.value = zip;
f.which.value = 1;
f.submit();
}
};
keyDownZip = function(e)
{
var code;
if (document.all) {
code = window.event.keyCode;
}
else {
code = e.which;
}
if ( code == 13 ) {
autoClicked();
}
};
//holds dollar times global functions
DT_F = function() {};
//holds global variables
DT_V = function() {};
String.prototype.DT_trim = function() {
return this.replace(/^\s+|\s+$/g,"");
};
DT_F.getFormFloat = function(el, unsetErr, nanError)
{
var sVal = document.getElementById(el).value;
sVal = sVal.DT_trim();
if ( sVal.length === 0 ) {
throw unsetErr;
}
sVal = DT_F.fixNumber(sVal);
fVal = parseFloat(sVal);
if ( isNaN(fVal) ) {
throw nanError;
}
return fVal;
};
DT_F.getFormInt = function(el, unsetErr, nanError, roundMessage)
{
var sVal = document.getElementById(el).value;
sVal = sVal.DT_trim();
if ( sVal.length === 0 ) {
throw unsetErr;
}
sVal = DT_F.fixNumber(sVal);
fVal = parseFloat(sVal);
if ( isNaN(fVal) ) {
throw nanError;
}
iVal = Math.round(fVal);
if ( iVal != fVal ) {
alert(roundMessage + " " + iVal);
}
return iVal;
};
DT_F.fixNumber = function(sVal)
{
sVal = sVal.replace(/\$/g, "");
sVal = sVal.replace(/\%/g, "");
sVal = sVal.replace(/,/g, "");
return sVal;
};
DT_F.addCommas = function(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
};
DT_F.round = function(n, dec)
{
var s = n.toFixed(dec);
return parseFloat(s);
};
DT_F.formatDollarsCents = function(x)
{
y = DT_F.addCommas( Math.abs(x).toFixed(2) );
if ( x < 0 ) {
return "-$" + y;
} else {
return "$" + y;
}
};
DT_F.formatDollars = function(x)
{
x = Math.round(x);
y = DT_F.addCommas( Math.abs(x) );
if ( x < 0 ) {
return "-$" + y;
} else {
return "$" + y;
}
};
DT_F.calcPayment = function(loan, months, rate)
{
var mRate = rate / 1200;
var payment;
// interest only
if ( months == -1 ) {
return loan * mRate;
}
if ( rate === 0 )
{
payment = loan / months;
}
else
{
var factor = Math.pow(1 + mRate, months );
payment = loan * ( mRate / (1 - 1/factor) );
}
return payment;
};
DT_F.setDateElements = function(dEl, mEl, yEl, d)
{
document.getElementById(dEl).value = d.getDate();
document.getElementById(mEl).value = d.getMonth();
document.getElementById(yEl).value = d.getFullYear();
};
DT_F.isLeapYear = function(y)
{
if( y % 4 === 0) {
if( y % 100 === 0) {
if ( y % 400 === 0) {
return true;
}
return false;
}
return true;
}
return false;
};
DT_F.getDaysInMonth = function(m, y)
{
switch (m)
{
case 0: return 31;
case 1:
if ( DT_F.isLeapYear(y) ) {
return 29;
}
return 28;
case 2: return 31;
case 3: return 30;
case 4: return 31;
case 5: return 30;
case 6: return 31;
case 7: return 31;
case 8: return 30;
case 9: return 31;
case 10: return 30;
case 11: return 31;
}
return -1;
};
// 1 = d1 later
// -1 = d2 later
// 0 = same
DT_F.dateLater = function(d1, d2)
{
if ( d1.getFullYear() > d2.getFullYear() ) {
return 1;
}
if ( d1.getFullYear() < d2.getFullYear() ) {
return -1;
}
if ( d1.getMonth() > d2.getMonth() ) {
return 1;
}
if ( d1.getMonth() < d2.getMonth() ) {
return -1;
}
if ( d1.getDate() > d2.getDate() ) {
return 1;
}
if ( d1.getDate() < d2.getDate() ) {
return -1;
}
return 0;
};
// Returns the difference in years between d1 and d2, where d2 is later than d1
DT_F.getYearDifference = function(d1,d2)
{
var y = d2.getFullYear();
var m = d1.getMonth();
var d = d1.getDate();
if ( DT_F.dateLater(new Date(y,m,d), d2) == 1 ) {
y--;
}
var yd = y - d1.getFullYear();
var dd = 0;
var ld = 0;
while ( DT_F.dateLater(new Date(y,m,d), d2) == -1 )
{
if ( DT_F.isLeapYear(y) ) {
ld++;
}
d++;
dd++;
if ( d > DT_F.getDaysInMonth(m,y) ) {
d=1;
m++;
if ( m > 11 ) {
m = 0;
y++;
}
}
}
var diy = 365 + ld/366;
return yd + dd/diy;
};
DT_F.getTotalSeconds = function(s, ap)
{
var hours, minutes, seconds = 0;
tabs = s.split(":");
if ( tabs.length != 2 && tabs.length != 3) {
throw("Time must be in format hh:mm or hh:mm:ss.");
}
hours = parseInt( tabs[0],10 );
if ( isNaN(hours) ) {
throw("Invalid hour: " + tabs[0] );
}
if ( hours < 1 || hours > 12 ) {
throw("Invalid hours, must be between 1-12.");
}
if ( hours == 12 ) {
hours = 0;
}
minutes = parseInt( tabs[1],10 );
if ( isNaN(minutes) ) {
throw("Invalid minutes: " + tabs[1] );
}
if ( minutes < 0 || minutes > 59 ) {
throw("Invalid minutes, must be between 0-59.");
}
if ( tabs.length == 3 )
{
seconds = parseInt( tabs[2],10 );
if ( isNaN(seconds) ) {
throw("Invalid seconds: " + tabs[2] );
}
if ( seconds < 0 || seconds > 59 ) {
throw("Invalid seconds, must be between 0-59.");
}
}
if ( ap != "AM" && ap != "PM" ) {
throw("Invalid AM/PM value.");
}
if ( ap == "PM" ) {
hours += 12;
}
var total = hours * 3600 + minutes * 60 + seconds;
return total;
};
DT_F.getTimeString = function(t, useAp)
{
var hours = Math.floor(t/3600);
t -= hours * 3600;
var minutes = Math.floor(t/60);
t -= minutes * 60;
seconds = t;
var postFix = "";
if ( useAp )
{
if ( hours >= 12 ) {
hours -= 12;
postFix = "pm";
}
else {
postFix = "am";
}
if ( hours === 0 ) {
hours = 12;
}
}
var x = hours + ":";
if ( minutes < 10 ) {
x += "0";
}
x += minutes + ":";
if ( seconds < 10 ) {
x += "0";
}
x += seconds;
x += postFix;
return x;
};
ou
var dt_hours_tRows = 1; //total
var dt_hours_vRows = 1; //visible
dt_hours_clearValues = function() {
for (var i=1; i<=dt_hours_tRows; i++ ) {
document.getElementById("dt_hours_h" + i).value = "";
document.getElementById("dt_hours_m" + i).value = "";
document.getElementById("dt_hours_s" + i).value = "";
}
};
dt_hours_addRow = function()
{
if ( dt_hours_tRows == dt_hours_vRows )
{
dt_hours_tRows++;
dt_hours_vRows++;
var row = document.createElement('div');
row.id = "dt_hours_r" + dt_hours_tRows;
row.innerHTML = "<div class='x'><input type='text' id='dt_hours_h" + dt_hours_tRows + "'></div><div class='x'><input type='text' id='dt_hours_m" + dt_hours_tRows + "'></div><div class='x'><input type='text' id='dt_hours_s" + dt_hours_tRows + "'></div>";
row.className = "row datarow";
document.getElementById("dt_hours_moreRows").appendChild ( row );
return;
}
dt_hours_vRows++;
document.getElementById("dt_hours_r" + dt_hours_vRows).style.display = "block";
};
dt_hours_removeRow = function()
{
if ( dt_hours_vRows == 1 ) {
alert("Can't remove the first row");
return;
}
document.getElementById("dt_hours_r" + dt_hours_vRows).style.display = "none";
dt_hours_vRows--;
};
dt_hours_getFormVal = function( el, err )
{
var sVal = document.getElementById(el).value;
sVal = sVal.DT_trim();
if ( sVal.length == 0 ) {
return 0;
}
sVal = DT_F.fixNumber(sVal);
fVal = parseFloat(sVal);
if ( isNaN(fVal) ) {
throw err;
}
return fVal;
};
dt_hours_calculate = function()
{
var html = [];
var totalTime = 0;
var h, m, s, d;
for ( var i=1; i<=dt_hours_vRows; i++ )
{
try
{
h = dt_hours_getFormVal( "dt_hours_h" + i, "Please enter a valid number of hours" );
m = dt_hours_getFormVal( "dt_hours_m" + i, "Please enter a valid number of minutes" );
s = dt_hours_getFormVal( "dt_hours_s" + i, "Please enter a valid number of seconds" );
}
catch ( ex )
{
alert( "Error on row " + i + ": " + ex );
}
var sum = h*3600 + m*60 + s;
totalTime += sum;
}
if ( totalTime < 0 ) {
s = totalTime * -1;
}
else {
s = totalTime;
}
h = Math.floor(s/3600);
s -= h*3600;
m = Math.floor(s/60);
s -= m*60;
if ( totalTime < 0 )
{
h = h*-1;
m = m*-1;
s = s*-1;
}
html.push("The total time is equal to the following: ");
html.push("<ul>");
var z = "";
if ( h != 0 ) {
z += h + " hours, ";
}
if ( m != 0 ) {
z += m + " minutes, ";
}
z += DT_F.round(s,4) + " seconds";
html.push("<li><b>" + z + "</b></li>");
html.push("<li>" + DT_F.addCommas( DT_F.round(totalTime,4) ) + " seconds</li>");
minutes = totalTime / 60;
html.push("<li>" + DT_F.addCommas( DT_F.round(minutes,4) ) + " minutes</li>");
hours = totalTime / 3600;
html.push("<li>" + DT_F.addCommas( DT_F.round(hours,4) ) + " hours</li>");
html.push("</ul>");
html.push("<div class=\"note\">(All results rounded to the nearest 0.0001)</div>");
var x = document.getElementById("dt_hours_results");
x.innerHTML = html.join('');
x.style.display = "block";
};
Merci