2017-08-01 2 views
0

Je reçois les données du site Web http://www.u-movie.com.tw/page.php?page_type=now&portal=cinema&ver=tw avec CasperJS.Comment supprimer un élément avec HTML DOM?

Je veux supprimer <p> qu'il n'y a pas d'ID.

J'essaie donc de sélectionner la racine et le retirer, mais il montrera null is not an object

Si je n'utilise jQuery simplement que javascript comment puis-je résoudre ce problème?

Toute aide serait appréciée.

Voici une partie de mon document: enter image description here

Voici mon code:

function getMovieTime() { 
    this.evaluate(function() { 
     var time = document.querySelectorAll('ul.posts p'); 
     time.parentNode.remove(); 
     time = document.querySelectorAll('ul.posts'); 
     return Array.prototype.map.call(time, function (e) { 
      return e.innerText; 
     }); 
    }); 
}; 

J'appelle getMovieTime(): ce rapport de code nul

var movieTime = []; // global variable 
casper.then(function() { 
    movieTime = this.evaluate(getMovieTime); 
}); 
+0

Pour quelle ligne est la 'null n'est pas un object' déclaré? –

+0

Je mets à jour ma question, j'appelle la fonction getMovieTime cause null signalé. –

+0

Pour quelle ligne est-il signalé? pour le 'this.evaluate (function() {'? Cela n'a pas de sens que vous appelez 'this.evaluate (getMovieTime)' et ensuite à l'intérieur de 'getMovieTime' en faisant un' this.evaluate (function() {'again –

Répondre

-1

D'abord,

La méthode node.remove() est implémentée dans la spécification DOM 4. Mais en raison de la mauvaise prise en charge des navigateurs, vous ne devriez pas utiliser il.

Ensuite, vous pouvez plutôt essayer de le remplacer à la place.

Ici

var parent = document.getElementById("latest_posts"); 
var child = document.getElementById("posts"); 
var para = document.createElement("p"); 
var node = document.createTextNode(" "); 
para.appendChild(node); 
parent.replaceChild(para,child); 

Remarque - vous devez utiliser getElementsByClassName au lieu de getElementById

+0

Merci pour votre réponse, mais je ne peux pas le comprendre.Il n'y a pas d'ID dans mon document.Comment puis-je compléter à partir de votre code? 'GetElementById' –

+0

Basé sur les balises et le code montré dans la question le 'remove' est utilisé contexte de phantomjs, donc le support du navigateur n'a pas vraiment d'importance tant que la version actuelle de phantomjs le supporte –

+0

Et où l'OP utilise' getElementsByClassName' ou ' Le code montre seulement 'querySelectorAll' et' .getElementById ("latest_posts") 'serait erroné, parce que l'élément a la classe' latest_posts' –