Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Prototype & Script.aculo.us
Prototype & Script.aculo.us Forum d'entraide sur les frameworks Prototype et Script.aculo.us
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2008, 10h10   #1
Membre à l'essai
 
Développeur informatique
Inscription : novembre 2006
Messages : 69
Détails du profil
Informations personnelles :
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 69
Points : 20
Points : 20
Par défaut prototype.js & nextSiblings()

J'ai le problème suivant:
Je récupère une collection/tableau d'éléments HTML_Select grâce à la fonction nextsiblings() que je désire ensuite supprimer.

Je fais donc
Code :
1
2
 
$(bCurrent).nextSiblings().remove();
Cependant cela entraine l'arret de scope
Quelqu'un aurait t-il une idée?
Bownobo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h21   #2
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Bonjour,
?

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h22   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Disons que si tu veux supprimer tous les enfants de ton élément, autant faire
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h28   #4
Membre à l'essai
 
Développeur informatique
Inscription : novembre 2006
Messages : 69
Détails du profil
Informations personnelles :
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 69
Points : 20
Points : 20
Citation:
Envoyé par Bovino Voir le message
Disons que si tu veux supprimer tous les enfants de ton élément, autant faire
Malheureusement comme le suggère la méthode nextSiblings je désire supprimer que les HTML_Select suivant.

Citation:
Envoyé par E.Bzz Voir le message
Je vais essayer en brutal mais si quelqu'un connait une solution différente je suis preneur.

Merci pour l'aide!
Bownobo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h33   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Citation:
Envoyé par E.Bzz Voir le message
Bonjour,
?

A+
Je ne pense pas, le problème vient de la boucle qui supprime les éléments.
Imaginons un tableau [a,b,c,d,e]
dans la boucle
Code :
for(i=0;i<tableau.length;i++)
à chaque passage dans la boucle, tableau.length varie ET l'indice saute un item sur deux, quand i vaut 1, tableau[1] de la première boucle est devenu tableau[0].
Donc la solution est de changer la boucle...
Code :
1
2
3
while(tableau[0]){
suppression
}
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h51   #6
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par Bownobo Voir le message
Malheureusement comme le suggère la méthode nextSiblings je désire supprimer que les HTML_Select suivant.
Tu n'as pas moyen de passer par
Code :
element_courant.parentNode.getElementsByTagName('select')
?

Le nextSibling() peut poser problème suivant les nav, car il ne gère pas tous les noeuds (vides en l'occurrence) de la même manière (cf. la FAQ) ...

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h58   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Il s'agit de la fonction nextSiblings() de Prototype en fait.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 10h59   #8
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par Bovino Voir le message
Il s'agit de la fonction nextSiblings() de Prototype en fait.
Ok, effectivement. Et elle gère correctement les noeuds vides ?
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h03   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Normalement oui, c'est pour ça que je pense qu'il s'agit d'un problème de boucle, notre camarade a expliqué son problème dans un post précédent et il supprime les éléments via la fonction each() de Prototype qui construit si je me souviens bien une boucle for débutant à 0, donc dans ce cas, les problèmes d'indexation des éléments que j'ai évoqué.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h06   #10
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Je n'avais pas suivi le début de l'histoire ...

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h15   #11
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Citation:
Envoyé par E.Bzz Voir le message
Je n'avais pas suivi le début de l'histoire ...

A+
Dépèche toi de faire réparer ta boule de cristal alors !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h17   #12
Membre à l'essai
 
Développeur informatique
Inscription : novembre 2006
Messages : 69
Détails du profil
Informations personnelles :
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 69
Points : 20
Points : 20
Citation:
Envoyé par E.Bzz Voir le message
Tu n'as pas moyen de passer par
Code :
element_courant.parentNode.getElementsByTagName('select')
?

Le nextSibling() peut poser problème suivant les nav, car il ne gère pas tous les noeuds (vides en l'occurrence) de la même manière
Je risque de me prendre encore plus la tête avec les méthodes javascript de bases. De plus prototype.js arrive très bien a me sortir un joli tableau de nestSiblings comme par ex: [object HTML_Select], [object HTML_Select], [object HTML_Select]...

Mais le problème se passe lors du remove(). C'est pourquoi je mettais lancé sur la piste de Bovino qui pense qu'il y a des problèmes d'index avec la collection généré par nexSiblings. Problème de piles encore.

Citation:
Envoyé par Bovino Voir le message
Code :
1
2
3
while(tableau[0]){
suppression
}
Pour l'instant j'ai un problème de boucle infini je continue mes recherches.

PS: Vous connaissez pas un moyen de débugger js plus plus précisément car typiquement le bug généré par le remove() n'apparait pas dans FireBug!
Bownobo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h25   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Code :
1
2
3
while($(bCurrent).nextSiblings().length>0){
$(bCurrent).nextSiblings()[0].remove();
}
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h44   #14
Membre à l'essai
 
Développeur informatique
Inscription : novembre 2006
Messages : 69
Détails du profil
Informations personnelles :
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 69
Points : 20
Points : 20
Bovino, j'ai collé ton code bêtement et c'est pas trop mal:
L'idée est que quand un select est cliqué tout les select suivants sont supprimés, puis un nouveau select est crée. Le but étant de faire des select en cascade.
Avec ton code on peut insérer des select sans soucis, mais le fait de cliquer sur un select ne supprime pas les select car le script est stoppé au remove. Autres symptome on peut continuer à insérer autant de select lorsque l'on sur le premier, celui qui est crée avant la prise en charge dynamique. Je crois qu'il y a peut etre un soucis d'id sur ce premier select. Enfin c'est casse-pieds
Bownobo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h57   #15
Membre à l'essai
 
Développeur informatique
Inscription : novembre 2006
Messages : 69
Détails du profil
Informations personnelles :
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 69
Points : 20
Points : 20
Bon bah j'y suis arrivé, c'est malheureux car je ne me suis pas servi de la logique mais plutôt d'un subterfuge:
Code :
1
2
 
$(bCurrent).nextSiblings().each( function(bItem) { bItem.replace(""); });
Eh oui c'est bien le obj.replace() qui aura solutionné le problème.
Le obj.remove() ne convenait pas et entrainait un bug! De dieu!

Voila c'est résolu et je m'en tiens à ça pour l'instant. Merci
Bownobo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 12h08   #16
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 828
Points : 35 998
Points : 35 998
Citation:
Je récupère une collection/tableau d'éléments HTML_Select grâce à la fonction nextsiblings() que je désire ensuite supprimer.
C'est ce que je t'ai donné, ensuite, si tu veux autre chose, il faut le préciser...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h57.


 
 
 
 
Partenaires

Hébergement Web