[RESOLU] Javascript/DOM -> enlever des tags

Javascript/DOM -> enlever des tags [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 04-07-2006 à 13:00:17    

Bonjour à tous,
j'aimerais dans un <div> pouvoir virer tous les tags <span> qui on un id commencant par "word" comme ceci :
 
<div id="test">
  texte texte <span id="word1">toto</span> texte texte <span id="word2"> texte texte</span>
</div>
 
et j'aimerai arriver a ca :
<div id="test">
  texte texte toto texte texte texte texte
</div>
 
Si quelqu'un sait comment arriver a ce resultat en DOM j'en serais tres reconnaissant  :jap:


Message édité par Ravi le 04-07-2006 à 16:49:13
Reply

Marsh Posté le 04-07-2006 à 13:00:17   

Reply

Marsh Posté le 04-07-2006 à 13:09:24    

Code :
  1. window.onload = function () {
  2.      var parent = document.getElementById('test');
  3.      var spans = parent.getElementsByTagName('span');
  4.      for (var i=0 ; i<spans.length ; i++)
  5.      {
  6.          if (spans[i].id.match(/^word/i))
  7.              parent.removeChild(spans[i]);
  8.      }
  9.  }


 
Edit : corrections diverses


Message édité par afbilou le 04-07-2006 à 13:24:39
Reply

Marsh Posté le 04-07-2006 à 13:31:28    

Petite erreur, je me suis mal exprimé, je veux garder le contenu du <span>, mais je veux uniquement virer le tag ...


Message édité par Ravi le 04-07-2006 à 13:32:38
Reply

Marsh Posté le 04-07-2006 à 13:39:15    

Mon script etait faux de toute facon :

Code :
  1. window.onload = function () {
  2.      var divParent = document.getElementById('test');
  3.      var spans = divParent.getElementsByTagName('span');
  4.   var nbr = spans.length
  5.      for (var i=0 ; i<nbr ; i++)
  6.      {
  7.          if (spans[i].id.match(/^word/i)) {
  8.              divParent.removeChild(spans[i]);
  9.              i--; nbr--;
  10.          }
  11.      }
  12.  }


Ca c'est la version qui marche et qui supprimer les spans et leur contenu ... juste pour info :)

Reply

Marsh Posté le 04-07-2006 à 13:43:36    

je trouve pas ça très beau l'histoire cette histoire de -- ;)
Bon c'est normal vu que spans est en fait un pointeur sur divParent.getElementsByTagName('span') et que lors de tes removeChild tu modifie ce dernier.
Et puis si j'ai tout compris Ravi veut garder le contenu...
 
J'aurais donc fait comme ça:

Code :
  1. window.onload = function () {
  2.     var parent = document.getElementById('test');
  3.     var spans = parent.getElementsByTagName('span');
  4.     while (spans.lenght)
  5.     {
  6.       if (spans[0].id.match(/^word/i))
  7.        parent.replaceChild(document.createTextNode(spans[0].nodeValue), spans[0]);
  8.     }
  9.   }


 
edit: Et en l'ecrivant je me rends comte de ma connerie :o
La ça va boucler à l'infini si il y a un span qui ne commence pas par word ... donc je vais corriger ça


Message édité par anapajari le 04-07-2006 à 13:44:48
Reply

Marsh Posté le 04-07-2006 à 13:51:32    

Code :
  1. window.onload = function () {
  2.      var divParent = document.getElementById('test');
  3.      var spans = divParent.getElementsByTagName('span');
  4.   var nbr = spans.length
  5.      for (var i=0 ; i<nbr ; i++)
  6.      {
  7.          if (spans[i].id.match(/^word/i)) {
  8.              divParent.replaceChild(document.createTextNode(spans[i].innerHTML) , spans[i]);
  9.              i--; nbr--;
  10.          }
  11.      }
  12.  }


 
J'aime bien mes -- :}

Reply

Marsh Posté le 04-07-2006 à 14:13:31    

ouais bon allez pour les -- ... C'est juste que je trouve pas ça très compréhensible ;)
L'autre méthode consiste a faire un tableau avec uniquement les spans ayant pour id word*, mais ça fait 2 boucles donc ...

Reply

Marsh Posté le 04-07-2006 à 15:40:37    

je vais vous mettre d'accord avec ca peut etre :
 

Code :
  1. var parent = document.getElementById('test');
  2. var spans = parent.getElementsByTagName('span');
  3.     for (i=0; i<spans.length; i++) {
  4.         if ((spans[i].id).substr(0,5) == "word_" ){
  5.             parent.replaceChild(document.createTextNode(spans[i].nodeValue), spans[i]);
  6.         }
  7.     }
  8. }


 
Mais ca ne marche pas, j'ai une exception sous firefox ...

Reply

Marsh Posté le 04-07-2006 à 15:44:50    

Ravi a écrit :

je vais vous mettre d'accord avec ca peut etre


Bah raté [:petrus75]
D'autant plus que tu dis toi meme que ca ne marche pas [:petrus75]
Qu'est ce qui te convient pas dans ma derniere solution ? [:petrus75]

Reply

Marsh Posté le 04-07-2006 à 15:46:25    

Est ce que tu peux nous montrer le code html et js de toute ta page html ???
 
edit: et je confirme que la solution correcte est la dernière postée par afbilou


Message édité par anapajari le 04-07-2006 à 15:47:44
Reply

Marsh Posté le 04-07-2006 à 15:46:25   

Reply

Marsh Posté le 04-07-2006 à 16:41:27    

Autant pour moi... en fait le code que je recuperais dans le <div id="test"> contenait d'autres div ... du coup je travaillais pas avec les bons Child...
Merci bcp de votre aide ;-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed