J'ai regardé un peu ton code.
en fait, le code est construit un peu bizarrement
ben je trouve pas.
Pour les deux flêches, je pense qu'il faut créer 2 images avec 2 name différents, sinon les navigateurs écrasent ceux précedement créés. En tout cas çà marche chez moi si je fais cette modification.
Changer le texte n'est pas trés compliqué, tu aurais trouvé tout seul en continuant à chercher.
Mes (petites) critiques.
Eliminer les onMouseOver et autres en attribut de balises, mais les gérer directement dans le fichier javascript . Même si présentement ils sont créés par le script donc çà revient un peu au même, mais çà te permettra de prendre les bonnes habitudes pour séparer les comportements du html.
Ne pas hésiter à passer par des variables pour stocker les sous objets que l'on manipule, c'est plus optimisé, i.e. répéter "document.getElementByTagName("machin).item(7)..." fait parcourir inutilement plusieurs fois le DOM au navigateur.
J'ai rajouté une fonction (piqué dans l'excellent
HTMLoverlays), pour prendre en compte un éventuel script déjà existant placé sur le onLoad de du document.
Je te propose donc çà (c'est sûrement largement encore à améliorer, je ne suis en rien maître es javascript):
Code : Tout sélectionner
function switchComments() {
var monBox = document.getElementById('box_comment');
var titreActuel=document.getElementById('commentaires').getElementsByTagName('span')[0].childNodes[1];
if (monBox.className == "commentVisible") {
monBox.className = "commentHidden";
titreActuel.nodeValue ='\u00A0montrer les commentaires\u00A0';
} else {
monBox.className = "commentVisible";
titreActuel.nodeValue ='\u00A0cacher les commentaires\u00A0';
}
}
function switchImage(){
// monMouseOver : variable globale
if (monMouseOver) {
document.down.src="/images/down_on.gif";
document.down2.src="/images/down_on.gif";
monMouseOver=false;
}else{
document.down.src="/images/down.gif";
document.down2.src="/images/down.gif";
monMouseOver=true;
};
}
//window.onload = function() {
function specialCommentaire() {
var monBox = document.getElementById('box_comment');
var titreCommentaire = document.getElementById('commentaires');
var SCimg = document.createElement('img');
SCimg.setAttribute('name', 'down');
SCimg.setAttribute('src', '/images/down.gif');
SCimg.setAttribute('alt', 'Down');
var SCimg2 = document.createElement('img');
SCimg2.setAttribute('name', 'down2');
SCimg2.setAttribute('src', '/images/down.gif');
SCimg2.setAttribute('alt', 'Down');
var SCa = document.createElement('a');
SCa.setAttribute('href', '#commentaires');
var SCspan = document.createElement('span');
SCspan.appendChild(SCimg);
SCspan.appendChild(document.createTextNode('\u00A0montrer les commentaires\u00A0'));
SCspan.appendChild(SCimg2);
SCa.appendChild(SCspan);
titreCommentaire.appendChild(document.createTextNode('\u00A0'));
titreCommentaire.appendChild(SCa);
titreCommentaire.getElementsByTagName("a")[0].onclick=switchComments;
monMouseOver=true;
titreCommentaire.getElementsByTagName("a")[0].onmouseover=switchImage;
titreCommentaire.getElementsByTagName("a")[0].onmouseout=switchImage;
switchComments();
}
function HO_addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
HO_addLoadEvent(specialCommentaire);
Si tu comprends pas une partie, tu demandes.
Pour les cookies, pourquoi pas, mais personnellement (en tant qu'utilisateur), çà me convient comme çà, çà ressemble à framasoft.