Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un
cs_kalamity
Messages postés4Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention12 décembre 2008
-
11 déc. 2008 à 18:00
cs_kalamity
Messages postés4Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention12 décembre 2008
-
12 déc. 2008 à 00:48
Bonjour,
J'aurais besoin de l'aide de développeur en javascript.
J'ai créé un tableau en HTML contenant X lignes et Y colonnes.
Chaque cellule contient un lien.
Je désire que l'utilisateur puisse cliquer sur une zone vide de la cellule ou sur le lien, d'où l'utilisation du style 'display:block' pour chaque lien.
je veux ensuite que quand l'utilisateur clique sur une cellule, une fonction javascript se déclenche et fait diverses actions dont changer le style de cette cellule.
Avec une fonction javascript que je vais vous fournir, tout fonctionne si je retire le style 'display:block' de mes liens ... mais j'en ai besoin.
je pense qu'il faudrait pouvoir déterminer en javascript "l'identité" de la cellule qui contient mon lien...
function init()
{
document.getElementById("dosel").onclick = change_style;
}
window.onload = init;
</script>
</HEAD>
----
Stressé
,
Timide
,
Bavard
,
----
Amical
,
Gentil
,
Disponible
,
<tfoot>
----
Vous pouvez sélectionner un ou plusieurs mots.Vous pouvez aussi déselectionner un mot.Vous ne pouvez pas déselectionner un mot pour lequel vous avez déjà voté
,
</tfoot>
</html>
A voir également:
Accèder à une cellule en cliquant sur un lien dans celle ci, mais celui ci a un
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 11 déc. 2008 à 21:56
Bonjour,
J'ai l'impression que tu te compliques la
vie, je m'explique...
ta fonction change_style récupére l'événement produit
event = event ||
window.event;
et tu en récupéres l'auteur
var nCell = event.target ||
event.srcElement;
dans ce cas pourquoi ne pas tester si il s'agit
d'une TD
SI OUI alors tu swap le style
SI NON alors tu prend le parentNode et ainsi de suite...
cs_kalamity
Messages postés4Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention12 décembre 2008 11 déc. 2008 à 22:10
merci pour ta réponse.
et bien avec ce code (que j'ai récupéré à droite à gauche ^^), j'obtiens une erreur car apparemment je ne clique pas sur un td mais sur un lien qui prend toute la cellule.
Donc j'ai essayé de remplacé la ligne :
var nCell = event.target || event.srcElement;
par ces deux là :
var nLien = event.target || event.srcElement;
var nCell = nlien.parentNode;
en me disant que le ParentNode du lien devait être la cellule dans laquelle il se trouve.
Mais j'obtiens une erreur sur la 2° de ces lignes : "Nlien n'est pas défini"
Tu vois le problème ?
(je précise que je suis un néophyte du javascript ... disons que j'en avais pas fait depuis des années)
</td>
</tr>
</tbody>
</table>c'est comme
le vélo cela ne s'oubli pas !
var nCell = event.target || event.srcElement;
nCell ou plus
exactement l'Objet qui a déclenché l'événement peut être tout ce qui se trouve
dans le DIV conteneur, la TABLE, la TR etc...jusqu'au lien A de la cellule...
donc il te faut le tester comme je te l'ai indiqué ci dessus
;O)
cs_kalamity
Messages postés4Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention12 décembre 2008 11 déc. 2008 à 22:31
Ben écoute j'allais te répondre obstinement que ça ne pouvait pas marcher parce que j'avais dféjà testé ... mais j'ai retesté en ça fonctionne ! merci :)
var nCell = event.target || event.srcElement;
if (nCell.tagName=='A')
{
var nCell = nCell.parentNode;
var colid = nCell.cellIndex;
var rowid = nCell.parentNode;
while(rowid.tagName!='TR') rowid = rowid.parentNode;
rowid = rowid.rowIndex ;
....
}
Bonne soirée !
Vous n’avez pas trouvé la réponse que vous recherchez ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 11 déc. 2008 à 22:43
perso j'aurais fait un truc du style
//-------------------------- function
change_style(event){
//-- Recup evenement
event = event || window.event;
//-- Recup objet declencheur
var Obj =
event.target || event.srcElement;
//-- tant que ce
n'est pas une TD
while( Obj.tagName != 'TD'){
//-- Recup le parent
Obj = Obj.parentNode;
//-- Si parent nul on quitte, exemple click sur
la bordure de la table
if( !Obj) return();
}
cs_kalamity
Messages postés4Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention12 décembre 2008 12 déc. 2008 à 00:48
oui je vais tester ça. Effectivement, si je peux accèder directement à la classe de la cellule sans avoir à préciser quelle cellule (ligne, colonne), c bien mieux.
En tous cas merci.
Ce code est en fait pour un appli facebook.
Dans une simple page html en local il fonctionne, mais sur facebook, après avoir adapté les fonctions javascript en FBJS, je n'ai aucune réaction .... aurait tu déjà programmé sur facebook avec leur JBJS par hasard ?