2008-11-15 6 views

Répondre

12

Version très simple:

var tables = document.getElementsByTagName("TABLE"); 
for (var i=tables.length-1; i>=0;i-=1) 
    if (tables[i]) tables[i].parentNode.removeChild(tables[i]); 
+0

Cela va manquer des tables alternatives - voir le commentaire ci-dessous pour les gories. – bobince

+0

lol, ouais. Je le réparerai. –

3

Si vous utilisez jQuery, il est assez facile ...

$(document).ready(function() { 
    $("table").remove(); 
}); 

ne sais pas comment vous le faites dans est d'autres bibliothèques.

Si vous n'utilisez pas une bibliothèque js, vous devriez l'être.

+0

Cela se fera au chargement du document. Si vous voulez le faire plus tard, utilisez $ ('table'). Remove() dans un gestionnaire d'événements. – tvanfosson

+0

@tvanfosson: Pourriez-vous s'il vous plaît élaborer un peu? Aussi, j'utilise blog wordpress? Comment puis-je charger la bibliothèque jquery? – ashokgelal

+0

Pourquoi utiliser une bibliothèque de milliers de lignes si vous avez besoin de supprimer certaines tables? -) Comme Joel Coehoorn montre qu'il ne s'agit que de trois lignes de code, elles sont plus longues car elles utiliseraient jQuery ... – roenving

5

Danger! getElementsByTagName renvoie un NodeList 'live'. Dans le code de Joel, la suppression de l'élément 0 déplace les éléments de la liste vers le bas de sorte que lorsque vous supprimez l'élément 1, vous en avez manqué un.

alternatives possibles: si vous savez que vous allez toujours être enlever tous les éléments, vous pouvez utiliser une boucle while:

var tables= document.getElementsByTagName('table'); 
while (tables.length>0) 
    tables[0].parentNode.removeChild(tables[0]); 

Ou, si vous pouvez ou peut ne pas supprimer, mais ordre d'itération est sans importance, passer par la liste arrière:

var tables= document.getElementsByTagName('table'); 
for (var i= tables.length; i-->0;) 
    tables[i].parentNode.removeChild(tables[i]); 

Si vous pourriez-ou peut-pas retirer et vous devez itérer en avant, vous êtes dans la position pénible d'avoir à copier la liste:

function toArray(l) { 
    var a= []; 
    for (var i= 0; i<l.length; i++) 
     a[i]= l[i]; 
    return a; 
} 

var tables= toArray(document.getElementsByTagName('table')); 
for (var i= 0; i<tables.length; i++) 
    ... 
1

Ou:

function myF() { 
    this.checkChild = function(tagN, node) { 
     if (node.tagName.toLower() == tagN.toLower()) { 
      node.parentNode.removeChild(node); 
     } 
     else { 
      var i; 
      for(i = 0; i < node.childNodes.length; i++) 
       this.checkChild(tagN, node.childNodes[i]); 
     } 
    } 
} 

Utilisation:


var m = new myF(); 
m.checkChild("The name of the tagname. This case: table", document.body); 

Bonne chance!

Questions connexes