IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

supprimer une classe


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut supprimer une classe
    Bonjour !

    J'ai vu dans la faq comment supprimer les enfants d'un nœud obtenu avec getElementById, mais comment faire s'il s'agit d'une classe unique ?
    Dans mon cas, j'essaie de supprimer la classe wtr-ft (cf. cette page pour un exemple, il s'agit du résultat d'un script/api twitter). Cette classe a un enfant div, mais elle ne contient aucun élément identifié par un id.

    Comme, selon about.com, il n'existe pas de méthode document.getElementsByClassName, j'utilise leur script qui implémente cette méthode. Ce qui donne le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    document.getElementsByClassName = function(cl) {
    var retnode = [];
    var myclass = new RegExp('\\b'+cl+'\\b');
    var elem = this.getElementsByTagName('*');
    for (var i = 0; i < elem.length; i++) {
    var classes = elem[i].className;
    if (myclass.test(classes)) retnode.push(elem[i]);
    }
    return retnode;
    }; 
     
    var TWlogo = document.getElementsByClassName('twtr-ft');
    TWlogo.parentNode.firstChild;
    Or j'ai comme erreur : TWlogo.parentNode is undefined

    Merci de l'aide,
    Thibaud.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    getElementsByClassName retourne un TABLEAU
    donc il faut récuperer ton premier élément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TWLogo[0].parentNode.....
    Ensuite le className est une chaine de caractère, donc pour supprimer une chaine tu dois utiliser replace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    element.className = element.className.replace(/\bMACLASSE\b/g,'');

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par thibaud74 Voir le message
    Comme, selon about.com, il n'existe pas de méthode document.getElementsByClassName
    Elle doit pas être très récente cette page...
    getElementsByClassName existe pour la plupart des navigateurs récents (inutile de préciser lequel est en retard ).
    Du coup, tu ferais mieux de tester l'existence de la méthode avant de la redéfinir

  4. #4
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    @dukej: si c'est bien compris c'est le code suivant que je dois écrire, pourtant j'obtiens "TWlogo[0].parentNode.replace is not a function"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var TWlogo = document.getElementsByClassName('twtr-ft');
    TWlogo[0].parentNode = TWlogo[0].parentNode.replace(/\btwtr-ft\b/g,'');
    Sinon, pourquoi utiliser \b (= correspondance en début de mot ?) et non pas une expression plus complexe pour effacer les balises ?

    @Bovino
    MErci, effectivement je croyais que getElementsByClassName fonctionnait jusqu'à présent, ça me rassure !

Discussions similaires

  1. [MooTools] Supprimer une classe CSS sur un évènement onclick
    Par titof90 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 24/04/2010, 02h27
  2. Modifier/supprimer une classe ou d'une fonction
    Par ProgVal dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2009, 11h05
  3. [API Reflection] Supprimer une classe du cache
    Par aurelienDC dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 13/04/2009, 19h25
  4. Supprimer une class loadée dynamiquement ?
    Par rastakouair dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2007, 13h14
  5. Supprimer une classe Fille sans toucher a la Mere
    Par 17mounir dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/01/2007, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo