11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'habite en zone GMT+8. Pour simplifier la vie à ma famille j'ai mis une horloge Paris/Singapour. En fait j'ai bricolé un petit exemple trouvé sur internet. J'ai choisi javascript et pas php car j'avais envie que les seconde soient rafraichies. En démo sur mon site : http://www.pontoizeau.org/Nicolas/dotclear/

J'ai 2 problèmes avec ce script :
1) Il ne passe pas à la validation
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.pontoizeau.org%2FNicolas%2Fdotclear%2F
2) Je n'arrive pas à le séparer de la page pour le mettre dans un fichier à part alors que j'y suis arrivé en local. J'ai mis
<script type="text/javascript" src="clock.js">
clock.js etant le fichier contenant le javascript. J'ai vérifié les droits du fichier sur le ftp ils sont bien 755. Je comprends pas pourquoi ça marche en local et pas sur le serveur.

Voilà le script :

</script>

<form name="info">
&nbsp;Paris :
<input class="clock" type="text"
size="7" readonly id="clockparis" onFocus="this.blur();">
Sg :
<input class="clock" type="text"
size="7" readonly id="clocksg" onFocus="this.blur();">


<script type="text/javascript">
function CalculeHeureAvance(){
auj = new Date();
auj_UTC = Date.UTC(auj.getFullYear(),auj.getMonth(),auj.getDate(),auj.getHours(),auj.getMinutes(),auj.getSeconds())
from = new Date(auj.getFullYear(),3,1,0,0,0);
do
{
from = new Date(from.getTime() - (24*60*60*1000));
} while (from.getDay()!=0)
to = new Date(auj.getFullYear(),10,1,0,0,0);
do
{
to = new Date(to.getTime() - (24*60*60*1000));
} while (to.getDay()!=0)
return auj_UTC>=from.getTime()&&auj_UTC<=to.getTime()?2:1;
}

function heure(){
var d = new Date();
var h = d.getUTCHours();
var m = d.getMinutes();
var s = d.getSeconds();
var hparis = "";
m = m<=9? "0"+m:m;
s = s<=9? "0"+s:s;
hparis = eval(h)+CalculeHeureAvance();
// Paris en heure d ete et d'hivers le dernier dimance de mars et d'octobre
var hsg = h+8;
// Singapour est GMT + 8 tout le temps
hparis = hparis>23? hparis%24:hparis;
hparis = hparis<=9? "0"+hparis: hparis;
hsg = hsg > 23? hsg%24:hsg;
hsg = hsg<=9? "0"+hsg:hsg;

var timeparis = "";
timeparis = hparis + ":" + m + ":" + s;
document.info.clockparis.value = timeparis;

var timesg="";
timesg = hsg + ":" + m + ":" + s;

document.info.clocksg.value = timesg;
setTimeout("heure()",1000);
}
heure();

</script>
</form>

Existe une meilleure méthode que le javascript tout en restant dynamique (ie avoir les secondes rafraichient)?
Modifié le 24 Jan 2005 - 22:46
Il me semble que la balise <form> et <input> n'est pas adapté pour afficher ton horloge.
Pourquoi ne pas les afficher en texte simple dans une balise <p> ou autre ?

Enfin c'est une suggestion et je ne sais si c'est possible, j'ai pas testé.
Bonsoir et bienvenue à toi Nicolas sur ce forum,

Merci de respecter les règles du forum et d'encadrer les codes que tu cites dans tes messages des balises adéquates ([ code][ /code] sans les espace), c'est plus lisible pour tout le monde. Smiley cligne
Je rejoindrais l'avis de Doomer.

En premier temps change la balise (je verrais plutot une balise du genre DIV contenir le script).

Ensuite cette balise contiendrais juste l'appel de la fonction (ici Heure).

Le restant du script peut être extériorisé.

... N'hésite pas à reposter en cas de problème ou de doutes ...
Je t'invite également comme le cite si bien Igor à éditer ton post et à mettre le code entre balise adéquate ainsi qu'a aller te présenter dans le topics adéquat du bar
(je me suis présenté ici)

J'ai fait les modifications suivantes (que les puristes n'hésitent pas à critiquer) :


	<form action="get">
	<table>

	<tr><td>Paris <input class="hr" type="text" id="clockparis" size="7" /></td><td> Singapour<input class="hr" type="text" id="clocksg" size="7" /></td></tr>
	</table>
	<script type="text/javascript" src="http://www.pontoizeau.org/Nicolas/dotclear/js/clock2.js"></script>
	</form>


J'utilise une balise input mais il y a peut-être plus approprié. J'ai pas trop testé avec le <p> je regarderai de près. En tout cas ça passe au validator.

J'ai remarqué une chose étrange. Lorsque je mets mon script dans le même répertoire que mon template.php, les horloges ne sont pas rafraichies. En revanche si je place le script dans un autre répertoire par exemple : http://www.pontoizeau.org/Nicolas/dotclear/js/clock2.js cette fois-ci ça marche! Très curieux.

Merci pour votre aide.
Nicolas Pontoizeau a écrit :
(je me suis présenté ici)

Milles excuses ! Je ne t'avais pas vu Smiley smile Hum... Pas de fouettage au cable réseau merciiiii.

Hum pour en revenir au problème initial... As-tu maintenant ce que tu désirais ? Car là j'ai plus tout suivis !

(Scuse je suis occupé à voir les modes de gestion RSS des forums et je trouve ca super mais il me faut un peu de temps à m'habituer Smiley cligne )