foreach en javascript - HTML/CSS - Programmation
Marsh Posté le 02-02-2005 à 10:37:35
bah est ce que ce serait pas plus leger que d'afficher 256 lignes de HTML (sans compter les <tr> et </tr> ?
surtout que je dois l'afficher 4 fois (pour l'instant !)
Marsh Posté le 02-02-2005 à 11:27:48
pour faire un document.write() sur plusieurs lignes... on peut pas ?
Marsh Posté le 02-02-2005 à 12:34:06
bouuuuuuh ! ça marche pas ma fonction!
http://clonecopy.net/php/ezdocs/
j'ai essayé un truc avec innerHTML mais ça marche pô !
Marsh Posté le 02-02-2005 à 13:04:55
Voila l'equivalent d'un foreach en JavaScript :
Citation : var tmp = new Array(); |
Edit : Apres avoir vu ton code JS, je sais pourquoi ton innerHTML fonctionne pas...
innerHTML est une "propriete", elle "contient" le contenu du div. Donc quand tu veux ajouter du contenu, il faut l'ajouter. Or toi tu ne fais que "changer le contenu", mais tu ne l'ajoutes pas.
Faut faire un "+=" et non un "=" seul.
Marsh Posté le 02-02-2005 à 13:46:03
Aussi, ta fonction "AffichePalette" est trop grosse. Au lieu de faire sur chaque ligne un "document.getElementById(div)", pourquoi ne fait-tu pas un :
Code :
|
Ca serait encore beaucoup plus léger et rapide. Là le pauvre navigateur doit faire à chaque ligne un getElementById, tu perd grave en performance. Et le mieux encore est de mettre tout ces scripts dans un fichier séparé pour bénéficier de la mise en cache du navigateur
Marsh Posté le 02-02-2005 à 15:54:02
bah j'ai tout mis dans un fichier séparé mais pour l'instant c'est un include en PHP ! donc ça ne peut pas se voir !
Sinon concernant ma page.. pour l'instant tout est valide en XHTML Strict 1.0 ... mais bon sur firefox je vois pas les backgrounds et j'ai des decalages avec mes div... et sur mac n'en parlons pas ! lol
je vais tenter de corriger le innerHTML avec ce que tu me dis !
Marsh Posté le 02-02-2005 à 16:25:39
FlorentG a écrit : Aussi, ta fonction "AffichePalette" est trop grosse. Au lieu de faire sur chaque ligne un "document.getElementById(div)", pourquoi ne fait-tu pas un :
|
bon bah ça fait planter IE !
j'ai fait ça :
Code :
|
Marsh Posté le 02-02-2005 à 16:54:09
bah ça ecrit en haut de la fenetre "ne reponds pas" et quand je veux fermer... ça plante
Marsh Posté le 02-02-2005 à 17:05:20
bah ya plus de boucle là dans mes JS :
http://clonecopy.net/php/ezdocs/javascript.php
Marsh Posté le 04-02-2005 à 10:53:40
bon j'ai toujours pas resolu mon petit soucy de couleurs.. ça plante mon IE ! et ça affiche que dalle ! lol!
pour info voici le code pour lancer la fonction :
Code :
|
Marsh Posté le 04-02-2005 à 10:54:20
J'avais aussi une fois fait planté IE avec du innerHTML... Utilise des fonctions DOM sinon, ce sera mieux
Marsh Posté le 04-02-2005 à 10:57:19
DOM ? conné pas.. faut que je me penche sur la question !
Marsh Posté le 04-02-2005 à 10:59:46
Ouais, penche-toi dessus. Surtout qu'en XHTML servit en application/xhtml+xml, t'es obligé de les utiliser
Marsh Posté le 04-02-2005 à 11:06:51
De toute façon ton truc sera lent, alors on n'est plus à ça près Et si ta page est en XHTML, faut utiliser du DOM sinon dans l'avenir ça marchera pas du tout
Marsh Posté le 04-02-2005 à 11:07:44
t'as pas une bonne doc là dessus ? j'essaie de trouver mais je vois rien à par cette page qui compare les deux !
Marsh Posté le 04-02-2005 à 11:54:14
j'ai pas encore bien compris la différence avec ce que j'ai fait mais en tous cas j'ai compris mon erreur ! ))
j'ai corrigé.. et ça marche !
en fait plutot que faire 256 lignes de d.innerHTML+="<td ....>";
je fais un
var d="blablabla";
d+="<table...";
d+="<td...>";
...
et seulement à la fin je fais
document.getElementById(div).innerHTML = d;
... et ça marche tres tres bien !
Marsh Posté le 04-02-2005 à 11:55:07
N'oublie pas de faire des boucles pour tes couleurs, pour gagner encore plus
Marsh Posté le 04-02-2005 à 11:56:04
ouai mais là faut que je me creuse un peu plus les meninges ! lol
Marsh Posté le 04-02-2005 à 11:57:05
bah je suppose qu'il faut imbriquer 3 boucles.. mais faut que je sache comment....
Marsh Posté le 04-02-2005 à 11:58:12
ahumm... bien bien ! je vais y reflechir... je vais deja debugger ce qui s'affiche !
Marsh Posté le 04-02-2005 à 12:02:09
wouai enfin ça marche sur IE... Mais firefox plante.. Et le mac n'en parlons pas ! lol !
Marsh Posté le 04-02-2005 à 12:21:24
c bon ça marche en fait !... me reste plus qu'un petit prob d'objet requis
Marsh Posté le 04-02-2005 à 12:57:08
chti probleme de concatenation je pense....
ça n'a pas l'air de marcher ça :
Code :
|
Marsh Posté le 04-02-2005 à 14:13:46
Ce que tu peux faire, c'est rajouter un "return false" dans les onclicks que tu utilise pour afficher les options. Comme ca ca evitera que le navigateur suive le lien "#" et du coup retourne tout en haut de la page.
Marsh Posté le 04-02-2005 à 14:23:47
yess ! merci pour le tuyau je vais faire ça tout de suite !
me reste à faire la même chose avec les polices qui prennent des centaines de lignes
nettoyer le code pour qu'il soit valide...
à propos... la balise img ne prends pas l'attribut name... je peux faire un document.monimage.src='' avec un id ?
Marsh Posté le 04-02-2005 à 14:40:32
Les trucs genre document.bidule ne doivent pas être utilisés, ils ne marchent pas en XHTML (application/xhtml+xml). Pareil pour l'attribut name qui n'est plus valide (sauf dans les formulaires). Faut toujours utiliser un id et la méthode getElementById...
Marsh Posté le 02-02-2005 à 10:34:21
J'avais cru voir que cette sorte de boucle existait en javascript mais visiblement c pas le cas... mais alors on fait comment pour utiliser les valeurs d'un tableau habituellement ???
je veux faire une tableau avec une serie de valeur (des codes hexadecimaux genre : Array("00","33","66","99","CC","FF" )
puis des boucles avec des document.write() pour afficher un tableau avec uen palette de couleurs .. je sais pas si c'est possible mais bon...