2017-08-01 85 views
0

我使用CasperJS从网站http://www.u-movie.com.tw/page.php?page_type=now&portal=cinema&ver=tw获取数据。如何使用HTML DOM去除元素?

我想删除没有ID的<p>

所以我尽量选择根和删除它,但它会显示null is not an object

如果我仅仅只有JavaScript如何解决它不使用jQuery?

任何帮助,将不胜感激。

这里是我的文档的一部分: enter image description here

这里是我的代码:

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; 
     }); 
    }); 
}; 

我打电话getMovieTime():此代码报告无效

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

对于该行是'空不是object'报道? –

+0

我更新我的问题,我调用getMovieTime函数导致报告为null。 –

+0

报告哪一行?对于'this.evaluate(function(){'?你调用'this.evaluate(getMovieTime)',然后在'getMovieTime'内部做一个'this.evaluate(function(){' –

回答

-1

首先,

node.remove()方法在DOM 4规范中实现。 但由于浏览器支持不佳,您不应该使用 它。

然后,您可以尝试替换它。

这里

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); 

注意 - 你应该使用的getElementsByClassName代替getElementById

+0

感谢您的回复,但我无法理解它在我的文档中,Ther没有标识,我怎样才能从您的代码中完成它?'getElementById' –

+0

Based在标签和问题中显示的代码中,'remove'用于phantomjs的上下文,因此只要当前版本的phantomjs支持,浏览器支持并不重要。 –

+0

OP在哪里使用'getElementsByClassName'或' getElementById'。代码只显示'querySelectorAll'和'.getElementById(“latest_posts”)'是错误的,因为元素的类是'latest_posts' –