11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis débutant en javascript (il s'agit de ma première tentative de code dans ce langage). Je travaille sur une page déjà codé dont je ne suis pas l'auteur dans laquelle un tableau contenant des dates est généré par un array. Il y a un bouton sur cette page permettant de classer le tableau en fonction du contenu des colonnes, et donc des dates.

Pour que ce truc fonctionne, il faut donc écrire les dates soient écrites à l'envers du style 2010/05/28, mais j'aimerais bien que les dates soient affichées à l'endroit et qu'il soit tout de même possible de classer le tableau par date.

Je me suis donc dit que je pourrais écrire les dates dans le tableau en timestamp et les convertir à l'affichage avec la fonction Date().

J'ai écris donc ce truc (qui à ma grande surprise est fonctionnel)

var n = 0
for (var i=0; i<data.length; i++) {
 if (isNaN(data[i][i][n])) {
 } else {
 var dateTexte = new Date(data[i][n] * 1000);
data[i][n] = dateTexte ;
 }
}


data étant le nom de l'array contenant les lignes du tableaux (dont le contenu de ces lignes sont également dans un array, c'est imbriqué).

Ça fonctionne, je peux classer les lignes du tableau par date, mais l'affichage des dates ressemble à Fri Jan 01 2010 12:00:00 GMT+0100 (CET), je sais que je pourrais utiliser les méthodes comme getFullYear() pour extraire les éléments de dates, mais une fois réinscrite dans le tableau, je perds les informations de date et il devient impossible de les classer chronologiquement.

J'ai beaucoup de mal à lire le code (très très peu commenté, et je maîtrise pas super bien le langage pour le comprendre facilement) et à identifier la façon dont l'array est classé et affiché dans la page, donc je me demandais s'il n'y avait pas un quelconque moyen de modifier le rendu de la date sans modifier intrinsèquement le contenu du tableau, et ainsi pouvoir quand même classer ces fichus lignes.

Merci d'avance si vous pouvez m'aider.[/i][/i][/i][/i]
Modifié par Goldysama (28 May 2010 - 21:09)
Devant l'urgence et après quelques essaies j'ai laissé tombé, je crois que le code n'était pas adaptable à ce que je voulais faire.

Je vais étudier le lien si dessus et travaillé sur la réécriture complète du script, j'ai encore pas mal de mal avec javascript qui est un langage que j'ai beaucoup de mal à cerner (au contraire de php que j'ai très rapidement maîtrisé et dont je n'ai eu aucun problème à utiliser pour coder des fonctions complexes de traitement de textes et de crypto).

Merci pour les liens, le second m'est moins utile car les timestamps étaient déjà présent dans la page, je cherchais juste un moyen de modifier la façon dont ils étaient convertis et affichés par le navigateur.
tu ne peux pas toucher au formattage de la date en JS. Le mieux est encore d'avoir un tableau qui liste les dates sous forme utilisable pour les calculs (timestamp ou mieux objet Date), et de gérer l'affichage à partir de ce tableau.
Et formatter des dates, en JS ou dans n'importe quel autre langage, ya pas plus galère Smiley smile
J'avais fait une classe de formattage de la date, tu peux t'en inspirer mais pas la copier (c'est moi qui l'ai faite, mais le code appartient à ma boite) : http://www.timeofmylife.com/assets/js/datehelper.class.js

JS n'est pas intuitif du tout, surtout si on vient de PHP
le plus dur à comprendre, c'est la portée des variables (le scope). Une fois que tu as maitrisé ça, tu as déjà évité la moitié des "bugs"
j'en parle un peu dans cet article sur Javascript orienté objet, pour les développeurs PHP
Merci pour la confirmation et pour les conseils. je vais étudier tes liens, le second va certainement m'aider à avancer.