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 :

Obligation d'ajouter des éléments d'un seul coup


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Obligation d'ajouter des éléments d'un seul coup
    Bonjour,

    désolé pour le titre, j'avoue ne pas trop avoir trop su comment intituler ce sujet.

    Voilà, j'essaie d'insérer du texte (via la balise TEXT) dans un élément SVG. En travaillant, je suis tombé sur un résultat qui m'a plutôt surpris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#schedule").append('<svg id="test2" xmlns="http://www.w3.org/2000/svg" version="1.1"><text transform="rotate(30 0 0)">blabla</text></svg>');
    Ce code marche sans problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $("#schedule").append('<svg id="test1" xmlns="http://www.w3.org/2000/svg" version="1.1"></svg>');
            $("#test1").append('<text transform="rotate(30 0 0)">blabla</text>');
    Celui-ci, pas vraiment.

    Mon problème est que le deuxième code n'affiche rien à l'écran, alors que l'élément TEXT semble bien avoir été ajouté, comme le montre cette capture d'écran :



    J'avoue ne pas comprendre ce qui différencie les deux codes, et pourquoi j'obtiens un résultat différent. Si quelqu'un pouvait m'éclaircir sur ce point, je lui en serais grandement reconnaissant.

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    jQuery peut manipuler le HTML, mais pas le SVG. De plus le DOM HTML est différent de celui du SVG.

    Dans le premier cas, vous insérer un texte qui contient un code SVG complet et c'est le navigateur qui fait le travail pour produire du SVG. Dans le deuxième cas, vous introduisez simplement un texte dans la page.

    J'ai passé un peu de temps pour fouiller l'Internet à la recherche d'une hypothétique solution miracle, mais je n'ai rien trouvé de convaincant.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ca explique tout, alors. Merci beaucoup !

    Aucune chance de pouvoir modifier la rotation d'un élément text via javascript, alors ? (même sans passer par jQuery)

    Ici, par exemple, ils semblent parler de le faire.

  4. #4
    Invité
    Invité(e)
    Par défaut
    dans l'exemple que tu montre il uyilise le dom

    en dom sa donne ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var gvs=document.createElement('svg');
    gvs.setAttribute('xmlns','http://www.w3.org/2000/svg" version="1.1');
    gvs.id='test1'
     
    var txt=document.createElement('text');
    txt.setAttribute('transforme','rotate(30 0 0)');
    txt.firstChild.nodeValue='blabla'
     
    gvs.appendChild(txt);
    document.getElementById("schedule").appendChild(gvs);

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Ton script ne marche pas Mekal :/

    Je me suis déjà heurté à la barbarie du DOM SVG. J'avais abandonné assez vite, mais je me souviens qu'il faut utiliser createElementNS pour que l'élément soit reconnu comme une balise SVG.

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> document.createElement('text').constructor
    HTMLUnknownElement {}
    >>> document.createElementNS('http://www.w3.org/2000/svg', 'text').constructor
    SVGTextElement {}

    Je vais me replonger dedans je crois

Discussions similaires

  1. Ajouter des élément a un tableau
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/07/2007, 14h23
  2. Réponses: 22
    Dernier message: 04/04/2007, 15h24
  3. Ajouter des éléments à un document XML
    Par ptr83 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/10/2006, 08h43
  4. [Shell] Ajouter des éléments au poste de travail
    Par Feeder_Fan dans le forum Framework .NET
    Réponses: 2
    Dernier message: 04/12/2005, 04h07
  5. Ajouter des éléments à ListBox
    Par priest69 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2005, 14h05

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