Mauvaise imbrication de selecteurs

lagChat Messages postés 4 Date d'inscription jeudi 9 octobre 2008 Statut Membre Dernière intervention 6 avril 2010 - 2 avril 2010 à 14:29
lagChat Messages postés 4 Date d'inscription jeudi 9 octobre 2008 Statut Membre Dernière intervention 6 avril 2010 - 6 avril 2010 à 07:35
Bonjour à tous,

Je vais essayer d'être claire : je suis sur le dev d'1 appli qui me tiens en éveil depuis quelques semaines. C'est beaucoup de bug et j'en suis devant un qui m'embête beaucoup car c'est le dernier et il est certainement tout con....pour "CELUI QUI SAIT!". j'ai donc décidé enfin de demander de l'aide en direct. (hors lecture - "parcourage" - scrutage de forum, bouquin, tuto...)

Je vous explique et puis je mettrais le code.

PB = > la strucutre : je crée un "listing dynamique de travailleur" que je construit dans un tableau donc avec un grand nombre de <tr> et <td> différentes et , <name> différents.

exemple :
une ligne contient 2 btn en 1ere&2eme td puis le nom en 3eme td puis un td pr chaque jours du mois ( certains jour sont marqués selon un calcul plus amont qui marque les jours de festival
).

le 1er btn ouvre 1 dialog(); qui permet de choisir dans la liste de jour (nb de j de l'événement), pour chaque ligne (donc avec en paramètre l'id du travailleur);

Or au moment de la validation des jours (adns le dialog(); ), mon besoin est d'ajouter, via jquery (car c'est la syntaxe que j'ai utilisé pour toutes mes interactions avec le listing : dialog(); autocomplete...), du texte (ex :"ok") dans le qui se trouve dans une <td> qui se trouve dans la <td id ="id_utitlisateur">

Pour prévenir à certaines questions qui vous paraitraient évidentes :

1°) J'ai fait les tests et je trouve bien la <td id="id_utilisateur"> ainsi que le mais séparemment
2°) Ma fonctionne car je fais des alert(); = > une fenêtre s'affiche pour le nombre de jours cliqué
3°) cela écrit bien dans car lorsque je ne précise pas d'id de il m'écrit dans tous les
4°) Je suis forcée de garder cette structures (trop de paramètres sont nécessaires)
5°) J'ai bien branché la prise...

Le code :

2 ligne de la liste (1foi chargée )

2 ligne de la liste (1 foi chargée)
<tr><td id ="85"><th class="rouge"></th>
                                                <td ></td><td ></td><td ></td><td ></td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td></td></tr>0 => 51 => 6

                                                <tr><td id="86"><th class="rouge"></th>
                                                <td ></td><td ></td><td ></td><td ></td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td class="rouge" id="83">83

</td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td><td ></td></td></tr>0 => 51 => 62 => 73 => 84 = > 9


Différents code que j'ai testé :

var info4  = data.split(/\, \s*/g);
//$("#verif2").html(info4[1]);
var comptage = info4.length-1; 
for (i=0; i<=comptage; i++)
{
//$("td#"+idBtn_tps_wo+":has(p#"+info4[i]+")").text("yes");
//$("td#"+idBtn_tps_wo+" p:nth-child(6)").text("yes");
//$("p#"+info4[i]).parent("#"+idBtn_tps_wo).text("troulaloupouet");
//$("td#"+idBtn_tps_wo+" p#"+info4[i]+":only-child").text("yes");
//alert('p#' + info4[i] + '[@td#' + idBtn_tps_wo +"]");
} 


Voila je pense que une fois que vous aurez lu tout ça vous aurez certainement besoin de revenir au début du message...

quelqu'un a une petite idée ? merci d'avance


Il est difficile de trouver un chat noir dans une pièce sombre!Surtout quand il n'y ai pas...

6 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 avril 2010 à 17:30
Bonjour,
je dois admettre que j'ai beau relire je ne saisi pas réellement ton problème. Peut être les vapeurs de l'apéro proche m'enivrent t-elles déjà le cerveau toujours est il que ...
- la portion de HTML fourni nous montre que les IDs ne sont pas uniques que il y a du texte entre des balises </TR> et <TR> que l'on trouve des construction du type ...

, c'est pas top mais bon...
- la partie de code JS ne nous apprend pas grand chose de tes tests

Je tente néanmoins un réponse
lors de l'appui sur un bouton, récupères la TR parent et vas écrire directement dans la TD correspondante, donc tu connait la position de par le jour et le nombre de colonne présente avant le jour 1...

Mais alors sous toutes réserves

;O)
0
lagChat Messages postés 4 Date d'inscription jeudi 9 octobre 2008 Statut Membre Dernière intervention 6 avril 2010
2 avril 2010 à 17:58
donc mon vrai problème est en fait que je souhaite écrire dans un lors de la validation d'un bouton.
je connais son id ainsi que celui de la td le contenant.
Ce que je cherche à faire c'est pouvoir cibler ce et écrire dedans.

la portion de HTML fourni nous montre que les IDs ne sont pas uniques

En effet et j'ai tout bêtement pensé lors de ma construction que le fait que ça ne soit pas le même type de balise
me permettait de mettre les mêmes id (pas très organisée comme dev ni fut-fut!)

il y a du texte entre des balises </TR> et <TR>

en fait c'est un variable que j'affiche pour mes test (liste des jours pour le travailleur qui précède);

et pour le code js, voici un bout plus complet que je vais commenter mieux (si je peux °-°')
j'envoie certaines données à un script php sur une autre page => celui va me permettre de faire mes update pour les utilisateurs et de me retourner un array des jours de taf. pour chacun d'eux je compare avec l'id du et je lui écris ("ok"); et non pas ("troulaloupouet");!
var idBtn_tps_wo = $(this).attr("id");//ici je récupère l'id du boutton sur lequel je clique (qui est c'est vrai le même que celui de la td qui contient le ...)

$.post("req_up_user.php", {queryIdUse: "" + idenU +"", queryIdWo: "" + idenW +"", queryListJour: ""+jour+"", queryMoi: ""+idenMoi+"", queryAnn: ""+idenAnn+""}, function(data2){
                                var info4 = data2.split(/\, \s*/g);//je sépare chaque jour
                                var comptage = info4.length-1;//je compte combien il y en a
                                for (i=0; i<=comptage; i++){// en commentaire quelque-unes des methodes que j'ai testé pour écrire dans mon (l'1 après l'autre bien sûr)
                                        /*$("td#"+idBtn_tps_wo+":has(p#"+info4[i]+")").text("yes");
                                        $("td#"+idBtn_tps_wo+" p:nth-child(6)").text("yes");
                                        $("p#"+info4[i]).parent("#"+idBtn_tps_wo).text("troulaloupouet");
                                        $("td#"+idBtn_tps_wo+" p#"+info4[i]+":only-child").text("yes");*/
                                        alert('p#' + info4[i] + '[@td#' + idBtn_tps_wo +"]");
                                    } 
});   


Pensez-vous que je dois éclaircir tout dabord cette histoire d'id ?

Je vous remercie en tout cas de votre première tentative, mais je craint qu'à présent les vapeurs de l'apéro seront plus que présente...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 avril 2010 à 18:17
connaissant l'ID du destinataire il n'y a aucun problème à écrire dedans en modifiant son innerHTML, MAIS il faut que l'ID soit UNIQUE...
donc le traitement des ID me semble une bonne première démarche

pour écrire dans un objet quelconque on utilise la méthode document.getElementById( id_objet)
et on modifie son innerHTML entre autres possibilités

exemple
var Obj = document.getElementById('mon_id');
if( Obj)
  Obj.innerHTML = "Bonjour le Monde !";
;O)
0
lagChat Messages postés 4 Date d'inscription jeudi 9 octobre 2008 Statut Membre Dernière intervention 6 avril 2010
2 avril 2010 à 18:27
Ok dac je fait le nettoyage dans mon écriture des id..

Il subsiste un "pb/question" c'est que le fait de savoir que c'est le avec cet id de cette <td> ave son id est important.
car a chaque ligne/tr la première td représente, par son id la ligne du 1er travailleur => donc les qui s'y trouvent représente les de ce travailleur
donc j'ai besoin de dire que j'envoi le text dans les de cette <td>
LA QUESTION : Il y a t-il un moyen de mettre un lien d'affiliation entre cette <td> et ce ?


var Obj = document.getElementById('mon_id');
if( Obj)
Obj.innerHTML = "Bonjour le Monde !";


question bête certainement :

j'ai attaqué mon script avec une "syntaxe jqery" si je peux dire, donc mes selecteurs sont du type $("p") ou $("#mon_id")

donc je pense qu'il me faut trouver une réponse en jquery non ?

merci.

Il est difficile de trouver un chat noir dans une pièce sombre!Surtout quand il n'y ai pas...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 avril 2010 à 20:14
jquery, ou les autres ne sont pas toujours indispensable, tu peux tout à fait intégrer des lignes de javascript perso lorsque tu utilises une bibliothèque toute faite.

Si tu tiens a mettre des ID de partout, une suggestion serait que tu mettes des ID reconnaissables et UNIQUE par exemple pour une même ligne
- les TR avec id = "TR_"+ num_ligne
- les TD avec id = "TD_"+ num_ligne +"_" +num_col
- les P avec id = "P_" + num_ligne +"_" +num_col

;O)
0
lagChat Messages postés 4 Date d'inscription jeudi 9 octobre 2008 Statut Membre Dernière intervention 6 avril 2010
6 avril 2010 à 07:35
Merci pour les conseils, je met cela en pratique ce matin.
0
Rejoignez-nous