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 :

[DOM] Changement de l'attribut name dynamique


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 65
    Points : 100
    Points
    100
    Par défaut [DOM] Changement de l'attribut name dynamique
    Bonjour.
    J'ai un petit soucis sous IE... ca étonne personne hein...
    Bon je m'explique.

    J'ai développé un système de recherche dans la page. Ce que je fais est simple:
    je prend le terme cherché, je crée une regexp. Je remplace tout les mots par "<a name="found"></a><span style="color: red" >LE MOT</span>"

    Après remplacement en masse, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var founded = document.getElementsByName('found');
    occurence = founded.length //j'en ai besoin en global pour revenir au début
    for(i=0;i<occurence;i++){
         founded[i].name='founded_'+i;
    }
    Ca fonctionne. J'ai bien des balises numérotées... founded_1 founded_2...
    Des 'alert' me prouve qu'il arrive à parser les balises avec attribut 'name="found"' etc...

    Ensuite je veux naviguer dans la page à chaque nouveau clique sur "chercher"...
    L'astuce est simple, je prend l'url, je vire "#.*" et j'ajoute en fin d'url "#fouded_<numero>".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var h = document.location.href.replace(/#.*/,""); //on enlève la dernière ancre
    document.location.href=h+"#"+"founded_"+sindex; //sindex est global et remis à 0 si il est > à occurence
    Donc quand le mec clique une fois on tombe sur founded_1 puis il reclique on va sur founded_2... du moins ca fonctionne sur Firefox !
    Pas sous IE... pire encore j'ai pas un seul message d'erreur...

    On dirait que le fait de changer les noms dynamiquement sous IE ne fonctionne pas...

    Je précise que occurence contient bien le nombre d'occurence trouvé sous IE, que founded est bien remplis avec les elements HTML et que je n'ai aucune erreur ni warning.
    Si vous avez une solution... merci de me le dire ca devient aggaçant de bosser sous IE...

    Précision: C'est une application assez importante, le texte affiché est relativement gros.

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    cf http://www.developpez.net/forums/viewtopic.php?t=400578 sur le sujet. IE a beaucoup de mal avec les name dynamiques....

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 65
    Points : 100
    Points
    100
    Par défaut
    ce qui veut dire que ca ne marchera jamais... je suis mal là

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Metal3d
    je suis mal là
    pas mieux, désolé. Attends IE 7

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 65
    Points : 100
    Points
    100
    Par défaut
    Ouais mais la livraison de projet et pour dans 1 mois... je doute que MS soit assez compétent et rapide pour ça

    Je suis coincé comme c pas permi là... vous avez une autre solution pour faire du scroll vers des mots trouvés au fur et à mesure ?
    Un genre de "find next" en fait...

    PS: on peut pas utiliser la fonction de recherche du navigateur, on doit pouvoir faire des regexp...

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Metal3d
    Je suis coincé comme c pas permi là... vous avez une autre solution pour faire du scroll vers des mots trouvés au fur et à mesure ?
    Il faut créer tes élements A directement avec le nom final en utilisant le DOM à la sauce µ$.
    Une commande du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    element = document.createElement("<a name='found_12'>");
    Te permet de créer un élement a avec un nom qui sera actif dans le document (compatible IE uniquement). Après a toi de voir ou le placer dans ton texte (pas forcément évident).

    C'est tout ce que je vois comme solution...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 65
    Points : 100
    Points
    100
    Par défaut
    Ouais essayé mais ca passe pas...

    Voilà ma honte qui fonctionne sur les deux navigateurs... tant pis c'est trop pressé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var contenu_page = new Array();
    var to_rewrite="";
    var regexp = new RegExp("name=.*?found.*?");
    contenu_page =  document.getElementById('allcontent').innerHTML.split(regexp);
    for (j=0; j<contenu_page.length;j++){
        //on y va pour chaque partie séparée par nos marques de mot trouvé...
        to_rewrite+=contenu_page[j]+"name=\"founded_"+j+"\"";
    }
    document.getElementById('allcontent').innerHTML = to_rewrite;
    Et ca fonctionne, c'est ça le pire...
    Petite note: En foutant un alert avec le contenu du DIV, je m'appercoi que quand j'ajoute "<a name='found'>" dans le code, ce foutu navigateur me renvoi "<a name=found>" (remarquez bien l'abscence de quote !!!) d'où la regexp qui accèpte un caractère entre "=" et "found"... génial

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par Metal3d Voir le message
    J'ai développé un système de recherche dans la page. Ce que je fais est simple:
    je prend le terme cherché, je crée une regexp. Je remplace tout les mots par "<a name="found"></a><span style="color: red" >LE MOT</span>"
    salut, je cherche justement à faire grosso-modo cela.
    as-tu le regexp sous la main ?

    merci.
    Nico, l'agrotic géomatic

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    jette un oeil sur ce topic ...
    http://www.developpez.net/forums/sho...d.php?t=535848

    la seule solution que j'ai pu trouver c'est de créer un nouvel objet et de supprimer l'ancien ...

    Le code donné tient compte de la différence de lecture seule du name entre IE et FFX pour certains objets
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] checkbox multiples avec attribut name du type nom[]
    Par beyo dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 16/04/2008, 09h15
  2. [DOM] Modifier l'attribut "name" avec IE
    Par tom42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/09/2007, 18h05
  3. [DOM] Changement dynamique de l'image de fond d'une balise <TD>
    Par Delphi-ne dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/02/2007, 19h40
  4. [C# 2.0] Récuperer l'attribut Name d'un textbox dynamique
    Par skud dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/10/2006, 14h37
  5. générer dynamiquement l'attribut name dans <jsp:setProperty
    Par anthropo dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2006, 17h49

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