2017-08-01 81 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' –