utiliser onClick sur une <div>

Invité
Invité n'ayant pas de compte PHPfrance

04 oct. 2007, 09:16

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 oct. 2007, 09:48

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

04 oct. 2007, 09:55

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 ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 oct. 2007, 10:00

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 4039 Messages

04 oct. 2007, 10:20

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 ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Invité
Invité n'ayant pas de compte PHPfrance

04 oct. 2007, 11:27

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

04 oct. 2007, 14:23

en essayant avec

Code : Tout sélectionner

document.location.href='#top'
ca ne marche toujours pas. Je ne vois pas comment faire.

ViPHP
ViPHP | 4039 Messages

04 oct. 2007, 19:23

question bête: as-tu crée une ancre avec comme nom "top" ?
(on ne sait jamais)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 443 Messages

04 oct. 2007, 20:44

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...

Invité
Invité n'ayant pas de compte PHPfrance

05 oct. 2007, 09:33

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 oct. 2007, 11:51

Effectivement, ton window.location.href n'a rien à faire dans une boucle à l'intérieur de ta fonction, mais aurait plus sa place à la fin de la fonction :)

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...