11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,


Après une petite absence de quelques mois, me revoici avec encore une question très probablement enwbiesque mais je ne trouve pas ce que je cherche, ni ici, ni sur Google.


Sur un CMS, en page d'accueil, je désire retailler un poil certaines chaines de caractères qui pour l'heure m'explosent un peu ma mise en page.

Dans mon template j'applique donc des id aux éléments à cutter, à savoir un h3 et un p, respectivement identifié "titre-du-topo" et "le-topo".

Une petite recherche dans mon référentiel JS m'a permis de pêcher la méthode substr() qui colle pile poil à ce que je souhaite faire mais vouila, mon script semble parfaitement inopérant :


		<script language="JavaScript">
				<!--
						window.onload=retaille-moi-la-div;

						function retaille-moi-la-div() {
							var a = document.getElementById("titre-du-topo");
							var b = document.getElementById("le-topo");
							var s1 = a.firstChild.nodeValue;
							var s2 = b.firstChild.nodeValue; 

							s1 = document.write(s1.substr(0,20)+"...");
							s2 = document.write(s2.substr(0,50)+"...");
						}
				// -->
		</script>		


Le script n'est carrément pas pris en compte, même quand je rajoute des alert() intermédiaires.


Quelqu'un peut-il me dire où je me suis planté ?


Merci beaucoup Smiley smile
Modifié par Zzz. (19 Mar 2008 - 16:48)
Hello,

Le caractère "-" n'est pas autorisé dans les identifiants en JS (et dans peu de langages de programmation d'ailleurs). Smiley smile

En général, on utilise le "camel case" : "retailleMoiLaDiv" par exemple.
Modifié par Julien Royer (19 Mar 2008 - 16:41)
En même temps c'est un operateur de soustraction donc c'est normal. "retaille-moi-la-div" est bien une soustraction en javascript.
skywalk3r a écrit :
En même temps c'est un operateur de soustraction donc c'est normal. "retaille-moi-la-div" est bien une soustraction en javascript.

C'est bien une soustraction à condition que ça se trouve dans un contexte où l'on attend une expression, ce qui n'est pas vraiment le cas ici.
OK merci pour le tuyau, c'est corrigé.

Seulement, ça ne débloque toujours pas mon script hélas...

Je sens que je vais encore passer qques heures dans mon référentiel moi...


Merci beaucoup pour les pistes en tout cas.
Il faudra que tu étudies un peu la manipulation du DOM. "document.write" n'est pas du tout adapté à ton besoin dans ce cas-là. De façon générale, je te conseille de jeter un coup d'oeil à la console d'erreurs de Firefox quand tu as des problèmes, voire mieux d'utiliser Firebug.
Julien Royer a écrit :
Il faudra que tu étudies un peu la manipulation du DOM. "document.write" n'est pas du tout adapté à ton besoin dans ce cas-là. De façon générale, je te conseille de jeter un coup d'oeil à la console d'erreurs de Firefox quand tu as des problèmes, voire mieux d'utiliser Firebug.


Ben en fait mon firebug reste désespérément muet sur d'eventuelles erreurs de JS. C'est ça qui me surprend. Rien ni personne n'a l'air de capter que le script est là et qu'il est supposé s'executer au chargement de la page.


Pour le DOM, oui probablement, je le parcours mais ne comprend pas forcément toujours ce qu'il y a dedans.

Que me suggèrerais tu à défaut de "document.write" ?
OK je comprends pourquoi "pas document.write"

Je viens de débugguer mon script et mon résultat vient de s'afficher sur... un joli fond blanc et rien autour.

Je vais plutôt la jouer avec innerHTML ou un truc du genre pour el remplacer de mes titres et paragraphes

en fait ce sont les balises de commentaires html à même le code js qui bloquaient tout.

Quoi qu'il en soit, merci à tous.
Modifié par Zzz. (19 Mar 2008 - 18:45)