Bonjour,
j'ai créé un site et j'utilise javascript pour afficher la date et l'heure.
Le problème c'est qu'avec IE (8 en l'occurence) ça ne marche pas alors qu'avec Firefox tout se passe bien.
IE dit que les variables 'day' et 'month' sont 'undefined'.
Je sais que ça veut dire que la référence d'objet n'est pas définie à une instance d'un objet.
Mais je ne comprend pas pourquoi.
4 lignes qui posent problème à la fin:
var days = Translate("days_array", lang);
var months = Translate("months_array", lang);
var day = days[date.getDay()];
var month = months[date.getMonth()];
Voici l'extrait de code de ma page:
<script type="text/javascript" src="time.js" temp_src="time.js"></script>
...
...
<li id="lang">fr</li>
Voici le fichier time.js:
/*
//File : time.js
//Author : Narvarth
//For : SpaceWarchief™®
// May be incompatible with IE
// Please do not remove these lines
*/
function Translate(
item,
lang)
{
var result;
if (lang == "fr")
{
if (item == "days_array")
{
result = new Array(
"Dimanche",
"Lundi",
"Mardi",
"Mercredi",
"Jeudi",
"Vendredi",
"Samedi");
}
else if (item == "months_array")
{
result = new Array(
"Janvier",
"Février",
"Mars",
"Avril",
"Mai",
"Juin",
"Juillet",
"Août",
"Septembre",
"Octobre",
"Novembre",
"Décembre");
}
else if (item == "first_day")
{
result = "1er";
}
}
else if (lang == "en")
{
if (item == "days_array")
{
result = new Array(
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday");
}
else if (item == "months_array")
{
result = new Array(
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December");
}
else if (item == "first_day")
{
result = "1st";
}
}
return result;
}
function SetDateString(
lang,
sec,
min,
hour,
day,
day_number,
month,
year)
{
var result;
var add;
if (lang == "fr")
{
switch (day_number)
{
case 1:
{
add = "er";
break;
}
default:
{
add = "";
break;
}
}
result = day + " " + day_number + "<sup>" + add + "</sup> " + month + " " + year + " - " + hour + ":" + min + ":" + sec;
}
else if (lang == "en")
{
switch (day_number)
{
case 1:
{
add = "st";
break;
}
case 2:
{
add = "nd";
break;
}
case 3:
{
add = "rd";
break;
}
default:
{
add = "th";
break;
}
}
result = day + " " + month + " " + day_number + "<sup>" + add + "</sup> " + year + " - " + hour + ":" + min + ":" + sec;
}
return result;
}
function GetLang()
{
var lang;
if (document.getElementById("lang"))
{
lang = document.getElementById("lang").innerHTML;
document.getElementById("lang").style.visibility = "hidden";
}
else
{
lang = "en";
}
return lang;
}
var date = new Date;
function Timer()
{
var lang = GetLang();
var days = Translate("days_array", lang);
var months = Translate("months_array", lang);
date = new Date;
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
var day = days[date.getDay()];
var day_number = date.getDate();
var month = months[date.getMonth()];
var year = date.getYear();
if (year < 2000)
{
year += 1900;
}
if (sec < 10)
{
sec = "0" + sec;
}
if (min < 10)
{
min = "0" + min;
}
if (hour < 10)
{
hour = "0" + hour;
}
//Warning:
//The following lines change the integer value of day_number
//It can be a problem for the tests such as (x == 1) because x is not an int but a string: x == "01" instead
//if (day_number < 10
//&& day_number > 1) // to let 1st and not 01st
//{
//day_number = "0" + day_number;
//}
// treated in SetDateString(...) function
//if (day_number == 1)
//{
//day_number = "1er";
//}
var datetime = SetDateString(
lang,
sec,
min,
hour,
day,
day_number,
month,
year);
if (document.getElementById)
{
document.getElementById("dateTime").innerHTML = datetime;
}
}
function Biper()
{
Timer();
setTimeout("Biper()", 1000);
}
window.onload = function()
{
Biper();
}
Merci d'avance pour tout éclaircissement.