par
Snoops » 18 avr. 2007, 14:29
Bonjour,
Je dit tout de suite que je ne maitrise pas du tout le code qui suit (c'est pour cela que je demande votre aide), je l'ai réexploité, je le comprend, mais je ne suis pas du tout a l'aise je ne connais pas le détail de toutes ces fonctions (en commentaire les lignes de codes qui ne m'étaient pas utililes mais que je souhaites apprendre par la suite dès que j'aurais un peu de temps...).
Le code :
Code : Tout sélectionner
function horloge(id_cadran, time, appel)
{
// conversion en entier des variables time et appel; au premier appel ce sont des chaînes
time = parseInt(time);
appel = parseInt(appel);
// on en fait une date
var d = new Date(time * 1000);
// on récupère les différentes composantes
var heure = d.getHours();
var min = d.getMinutes();
var sec = d.getSeconds();
// gestion des 0 pour qu'il y ait toujours un chiffre de la forme xx
if (heure < 10)
{
heure = "0" + heure;
}
if (min < 10)
{
min = "0" + min;
}
if (sec < 10)
{
sec="0"+sec;
}
// le jour (libellé)
var day;
switch (d.getDay())
{
case 1: day = "Lundi";
break;
case 2: day = "Mardi";
break;
case 3: day = "Mercredi";
break;
case 4: day = "Jeudi";
break;
case 5: day = "Vendredi";
break;
case 6: day = "Samedi";
break;
case 0: day = "Dimanche";
break;
default: day = "erreur : " + d.getDay();
}
// le mois
var mois;
switch (d.getMonth())
{
case 0: mois = "Janvier";
break;
case 1: mois = "Février";
break;
case 2: mois = "Mars";
break;
case 3: mois = "Avril";
break;
case 4: mois = "Mai";
break;
case 5: mois = "Juin";
break;
case 6: mois = "Juillet";
break;
case 7: mois = "Août";
break;
case 8: mois = "Septembre";
break;
case 9: mois = "Octobre";
break;
case 10: mois = "Novembre";
break;
case 11: mois = "Décembre";
break;
default: mois = "erreur : " + d.getMonth();
}
var annee = d.getFullYear(); // l'année xxxx
var jour = d.getDate(); // le jour (chiffre)
// si elle n'existe pas on la crée
if (appel == 1)
{
//fieldset = document.createElement("fieldset");
//legend = document.createElement("legend");
//hr = document.createElement("hr");
br = document.createElement("br");
divCadran = document.createElement("div");
//texteLegend = document.createTextNode("Horloge");
texteDate = document.createTextNode(day + " " + jour + " " + mois + " " + annee);
texteHeure = document.createTextNode(heure + " h " + min + " min " + sec + " sec");
divCadran.id = "time";
divCadran.style.fontWeight = "bold";
// mise en forme du DOM
divCadran.appendChild(texteDate);
divCadran.appendChild(br);
divCadran.appendChild(texteHeure);
/*legend.appendChild(texteLegend);
fieldset.appendChild(legend);
fieldset.appendChild(hr);*/
//fieldset.appendChild(divCadran);
document.getElementById("time").appendChild(divCadran);
}
else // sinon on met à jour la date et l'heure
{
[color=red]// TOUT SE PASSE ICI !!![/color]
alert (document.getElementById("time").childNodes.item(0).nodeValue + " |-| ");
/*alert (document.getElementById("time").childNodes.item(0).nodeValue + " |-| " + document.getElementById("time").childNodes.item(2).nodeValue);*/
document.getElementById("time").childNodes.item(0).nodeValue = day + " " + jour + " " + mois + " " + annee;
document.getElementById("time").childNodes.item(2).nodeValue = heure + " h " + min + " min " + sec + " sec";
[color=red]// JUSQUE LA !!![/color]
}
// temps unix + 1
time = time + 1;
// incrémentation de appel
appel = appel + 1;
// on rappelle la fonction aprés une seconde
setTimeout("horloge('" + id_cadran + "', '" + time + "', '" + appel + "')",1000);
}
Ce code fonctionne parfaitement sous Firefox, mais sous IE ... une erreur apparait (est-ce vraiment bizzare ???).
J'ai rajouté le alert pour comprendre où était mon erreur. Celui en commentaire ne fonctionne pas tout comme la 2e affectation du else ...
il n'aime pas mon "...item(2)...". Lorsque j'affiche le item(0), sa valeur est tout le temps à NULL (ne devrait elle pas etre la date ???), et item(2) n'est pas reconnu. Du coup le script ne s'execute pas.
Connaissez vous la solution a ce probleme ?
Merci d'avance !
Bonjour,
Je dit tout de suite que je ne maitrise pas du tout le code qui suit (c'est pour cela que je demande votre aide), je l'ai réexploité, je le comprend, mais je ne suis pas du tout a l'aise je ne connais pas le détail de toutes ces fonctions (en commentaire les lignes de codes qui ne m'étaient pas utililes mais que je souhaites apprendre par la suite dès que j'aurais un peu de temps...).
Le code :
[code]function horloge(id_cadran, time, appel)
{
// conversion en entier des variables time et appel; au premier appel ce sont des chaînes
time = parseInt(time);
appel = parseInt(appel);
// on en fait une date
var d = new Date(time * 1000);
// on récupère les différentes composantes
var heure = d.getHours();
var min = d.getMinutes();
var sec = d.getSeconds();
// gestion des 0 pour qu'il y ait toujours un chiffre de la forme xx
if (heure < 10)
{
heure = "0" + heure;
}
if (min < 10)
{
min = "0" + min;
}
if (sec < 10)
{
sec="0"+sec;
}
// le jour (libellé)
var day;
switch (d.getDay())
{
case 1: day = "Lundi";
break;
case 2: day = "Mardi";
break;
case 3: day = "Mercredi";
break;
case 4: day = "Jeudi";
break;
case 5: day = "Vendredi";
break;
case 6: day = "Samedi";
break;
case 0: day = "Dimanche";
break;
default: day = "erreur : " + d.getDay();
}
// le mois
var mois;
switch (d.getMonth())
{
case 0: mois = "Janvier";
break;
case 1: mois = "Février";
break;
case 2: mois = "Mars";
break;
case 3: mois = "Avril";
break;
case 4: mois = "Mai";
break;
case 5: mois = "Juin";
break;
case 6: mois = "Juillet";
break;
case 7: mois = "Août";
break;
case 8: mois = "Septembre";
break;
case 9: mois = "Octobre";
break;
case 10: mois = "Novembre";
break;
case 11: mois = "Décembre";
break;
default: mois = "erreur : " + d.getMonth();
}
var annee = d.getFullYear(); // l'année xxxx
var jour = d.getDate(); // le jour (chiffre)
// si elle n'existe pas on la crée
if (appel == 1)
{
//fieldset = document.createElement("fieldset");
//legend = document.createElement("legend");
//hr = document.createElement("hr");
br = document.createElement("br");
divCadran = document.createElement("div");
//texteLegend = document.createTextNode("Horloge");
texteDate = document.createTextNode(day + " " + jour + " " + mois + " " + annee);
texteHeure = document.createTextNode(heure + " h " + min + " min " + sec + " sec");
divCadran.id = "time";
divCadran.style.fontWeight = "bold";
// mise en forme du DOM
divCadran.appendChild(texteDate);
divCadran.appendChild(br);
divCadran.appendChild(texteHeure);
/*legend.appendChild(texteLegend);
fieldset.appendChild(legend);
fieldset.appendChild(hr);*/
//fieldset.appendChild(divCadran);
document.getElementById("time").appendChild(divCadran);
}
else // sinon on met à jour la date et l'heure
{
[color=red]// TOUT SE PASSE ICI !!![/color]
alert (document.getElementById("time").childNodes.item(0).nodeValue + " |-| ");
/*alert (document.getElementById("time").childNodes.item(0).nodeValue + " |-| " + document.getElementById("time").childNodes.item(2).nodeValue);*/
document.getElementById("time").childNodes.item(0).nodeValue = day + " " + jour + " " + mois + " " + annee;
document.getElementById("time").childNodes.item(2).nodeValue = heure + " h " + min + " min " + sec + " sec";
[color=red]// JUSQUE LA !!![/color]
}
// temps unix + 1
time = time + 1;
// incrémentation de appel
appel = appel + 1;
// on rappelle la fonction aprés une seconde
setTimeout("horloge('" + id_cadran + "', '" + time + "', '" + appel + "')",1000);
}
[/code]
Ce code fonctionne parfaitement sous Firefox, mais sous IE ... une erreur apparait (est-ce vraiment bizzare ???).
J'ai rajouté le alert pour comprendre où était mon erreur. Celui en commentaire ne fonctionne pas tout comme la 2e affectation du else ...
il n'aime pas mon "...item(2)...". Lorsque j'affiche le item(0), sa valeur est tout le temps à NULL (ne devrait elle pas etre la date ???), et item(2) n'est pas reconnu. Du coup le script ne s'execute pas.
Connaissez vous la solution a ce probleme ?
Merci d'avance !