11548 sujets

JavaScript, DOM et API Web HTML5

salut
sur mon site www.franckferville.com dans la page portraits, a droite de la photo il y a le nomet en dessous la publication mais sur IE c'est OK et sur safari la publication il y a marque undefined
je vous mets le code javascript ue j'ai fait
merci
[ code]
function displayPics()
{
var photos = document.getElementById('gallerie') ;
var liens = photos.getElementsByTagName('a') ;
var big_photo = document.getElementById('big_pict') ;
var titre_photo = document.getElementById('droite2').getElementsByTagName('dt')[0] ;
var titre_photo2 = document.getElementById('droite').getElementsByTagName('dt')[0] ;

for (var i = 0 ; i < liens.length ; ++i) {
liens.onclick = function() {
big_photo.src = this.href;
big_photo.alt = this.title;
titre_photo.firstChild.nodeValue = this.title;
titre_photo2.firstChild.nodeValue = this.title2;
return false;
};
}
}
window.onload = displayPics;
[/code]

d eplus title2 coorespond a cela dans ma page

	  <td><a href="photo12cm/33Philippe sollers- 1998 jpg.jpg" title="Philippe Sollers" title2="published in Libération 1998"><img src="mini/philippesollersmini.jpg" alt="Le titre de la photo 2" border="0"/></a></td>

Modifié par photo (15 Nov 2005 - 22:19)
Bonjour photo.

Est-ce que tu pourrais baliser ton code avec le BBCode [ code][/code ] (sans les espaces) comme spécifié dans les règles du forum* ?

Merci Smiley smile

* que tu as lues et approuvées en t'inscrivant.
Bonjour,

chez moi (firefox, linux), la page est grise sans rien (javascript et flash fonctionnent pourtant bien).
En conformité avec la norme, tu devrais utiliser
<script type="text/javascript' ... 

et non
<script language="... 

Webdevelopper me signale une erreur à la ligne 23
var layer2 = (isNS) ? document.layer2 : document.all.layer2.style; 


il te manque une ligne qui affecterait une valeur à la variable isNS, à moins que ce soit l'appelle d'une fonction...
Bref, je suppose que tu as recopié du code et il t'en manque un bout ...
salut
effectivement dans ma page je n'avais pas vu qu'il me restait d'ancien bout de code la j'ai tout remis a plat
as tu toujours une page grise?
si non pour la page portraits est elle normale
merci
Bonjour,

Pour moi la page d'accueil est uniformément grise (FireFox, Opéra et Konqueror), comme si mon plug-in n'acceptait pas ton flash.

Dans ce conditions, il est absolument impossible de consulter ta page portrait... puisque rien n'apparaît à l'écran. Un conseil donc avant d'aller plus loin: prévois un accès alternatif en HTML simple pour les gens n'ayant pas Flash, ou ceux pour lesquels ton animation ne marche pas.

Pour ton code JavaScript, tu as une ligne

 titre_photo2.firstChild.nodeValue = this.title2;


L'attribut title2 n'existant pas, rien ne va se passer (c'est peut-être l'origine de ton undefined).
Je réponds sur le forum à ton message, afin d'en faire "profiter" tout le monde... Ton problème pourra peut-être intéresser quelqu'un d'autre un jour!

Tu m'indiques dans ton MP que la page d'accueil n'est plus grise... Je suis au regret de te déclarer que chez moi, elle l'est encore.

Essaie d'enlever l'élément <style> que tu as mis:
1. je ne sais pas si changer le fond de la page est utile ou pas
2. un élément <style> doit être inclus dans le <head> de ta page:

<!DOCTYPE...>
<html [b]lang="fr"[/b]>
   <head>
        <title>...</title>
        <meta http-equiv="Content-Type"...>
        <style type="text/css">
            (...)
        </style>
    </head>
    <body>
        (...)
    </body>
</html>


Passons maintenant au bout de code que tu m'as transmis, et que je copie ci-dessous:

<td>
<a href="photo12cm/01petergabriel2003libe.jpg" title="Peter Gabriel" title2="published in Libération 2003">
<img src="mini/peter gabrielmini.jpg" alt="Le titre de la photo 1" border="0"/>
</a>
</td>


Tout d'abord, si tu as déclaré un doctype en HTML, ce n'est pas la peine de fermer ta balise <img> comme tu le fais avec un "/": (...)border="0"> suffit.
Ensuite, il vaut mieux éviter les espaces et les accents dans les noms de fichiers (html ou images...).
Enfin, pour t'économiser du code, tu peux enlever l'attribut border="0" de ton img, et ajouter dans une feuille de style appliquée à ta page

a img{
    border: none;
}


Pour ton problème JavaScript, je pense savoir ce qui ne va pas (c'est la réponse que tu espérais ? Smiley cligne ). L'attribut title2 est invalide pour l'élément <a>. Il n'existe pas dans la spécification du HTML transitionnel que tu utilises, ni dans aucune autre d'ailleurs.
Il s'ensuit que la propriété title2 ne peut exister pour quelque objet-élément que ce soit. IE l'accepte peut-être, mais c'est un défaut de son JavaScript. Cette propriété ne peut pas être définie pour un objet-élément.

En revanche, peut-être peux-tu compléter ton title ainsi:

<td>
<a href="photo12cm/01petergabriel2003libe.jpg" title="Peter Gabriel | published in Libération 2003">
<img src="mini/peter gabrielmini.jpg" alt="Le titre de la photo 1" border="0"/>
</a>
</td>


Tu peux récupérer la partie qui était auparavant dans le title2 en scindant le contenu de l'attribut title de part et d'autre du caractère "|" (par exemple...).

En passant, plutôt qu'utiliser la propriété title, utilise plutôt la méthode getAttribute:

 titre_photo.firstChild.nodeValue = this.getAttribute("title");


C'est une méthode (sans jeu de mot Smiley cligne ) qui est plus susceptible de marcher sur un grand nombre de navigateurs, et est généralisable, éventuellement, à d'autres attributs si tu en as besoin.

J'espère t'avoir été utile!