Page 1 sur 1
utiliser onClick sur une <div>
Posté : 04 oct. 2007, 09:16
par Invité
Bonjour tout le monde, j'utilise un script accordion qui me permet de faire "un ascenceur" avec du contenu.
J'aurais voulu savoir s'il était possible de faire ceci :
Code : Tout sélectionner
<div id="test1-header" class="accordion_headings" onClick="window.location.href='#top';">
afin d'être redirifé systématiquement en haut de page.
Posté : 04 oct. 2007, 09:48
par Ryle
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Javascript, AJAX".
Quant à ta question, j'en aurais une simple : as-tu essayé ? c'est le meilleur moyen de voir si cela fonctionne ou pas, et tu auras une réponse immédiate au lieu d'attendre que quelqu'un passe ici et te réponde

Posté : 04 oct. 2007, 09:55
par Invité
oui biensur j'ai essayé mais cela ne marche pas. J'aurais voulu savoir pourquoi. Il est vrai que ma question est mal tournée..
On ne peut alorq pas faire de onClick sur une balise div ?
Posté : 04 oct. 2007, 10:00
par Ryle
Bah euh... si, bien sur que l'on peut... Si tu utilises le code suivant dans une bête page html et que tu cliques sur le xxx, tu verras que le #top apparait bien dans l'url :
<div onClick="window.location.href='#top';">xxx</div>
Maintenant, si cela ne fonctionne pas chez toi, il y a manifestement un soucis. Celui-ci est peut être du à ton script d'accordéon qui doit déjà capturer l'événement du click pour (dé)plier le div. C'est donc peut être au niveau de ses fonctions qu'il te faut regarder et peut être ajouter ton #top

Posté : 04 oct. 2007, 10:20
par Berzemus
d'habitude tu peux aussi enlever le "top":
<div onClick="window.location.href='#;">xxx</div>
Si aucune ancre n'est spécifiée, on retourne en haut de page.
Mais pourquoi ne pas mettre un petit lien, vers le haut de page ?
Posté : 04 oct. 2007, 11:27
par Invité
oui effectivement, le problème doit venir du script js de l'accordeon qui dépli et repli les différentes balises div.
Alors du coup, je l'ai mis dans cette fonction (function Accordian) car il me semble que c'est là qu'a "lieu" le onClick mais sans succès..
Code : Tout sélectionner
//Accordian Initializer
function Accordian(d,s,tc){
// get all the elements that have id as content
l=$(d).getElementsByTagName('div');
c=[];
for(i=0;i<l.length;i++){
h=l[i].id;
if(h.substr(h.indexOf('-')+1,h.length)=='content'){c.push(h);}
}
sel=null;
//then search through headers
for(i=0;i<l.length;i++){
h=l[i].id;
if(h.substr(h.indexOf('-')+1,h.length)=='header'){
d=$(h.substr(0,h.indexOf('-'))+'-content');
d.style.display='none';
d.style.overflow='hidden';
d.maxh =sh(d);
d.s=(s==undefined)? 7 : s;
h=$(h);
h.tc=tc;
h.c=c;
// set the onclick function for each header.
h.onclick = function(){
for(i=0;i<this.c.length;i++){
window.location.href='#top'; <-<-<-<-<-<-
cn=this.c[i];
n=cn.substr(0,cn.indexOf('-'));
if((n+'-header')==this.id){
ex($(n+'-content'));
n=$(n+'-header');
cc(n,'__');
n.className=n.className+' '+n.tc;
}else{
cl($(n+'-content'));
cc($(n+'-header'),'');
}
}
}
if(h.className.match(/selected+/)!=undefined){ sel=h;}
}
}
if(sel!=undefined){sel.onclick();}
}
Une idée peut être ?
Posté : 04 oct. 2007, 14:23
par Invité
en essayant avec
ca ne marche toujours pas. Je ne vois pas comment faire.
Posté : 04 oct. 2007, 19:23
par Berzemus
question bête: as-tu crée une ancre avec comme nom "top" ?
(on ne sait jamais)
Posté : 04 oct. 2007, 20:44
par Tracker
Seconde question bête dans le header de ta page html tu as bien référencé les source js de prototype ou mootools, parque sinon la function $(...) n'existe pas...
Posté : 05 oct. 2007, 09:33
par Invité
oui oui, j'ai bienf ait tout ca (je ne suis pas si bête que ça)
Bon j'ai trouvé une solution, j'ai placé document.location.href ailleurs dans le code, et là ca amrche.
MErci pour votre aide
Posté : 05 oct. 2007, 11:51
par Ryle