2013-08-28 52 views
0

我正在使用Web服務來查詢購票界面,並拉回在任何時間點打開的所有支持票證,並將其顯示在一個不錯的整潔表格中iframe作爲我們web應用程序的一部分。我的應用程序是用PL/SQL編寫的,但是我用它來構建我的HTML頁面和顯示在我的iframe中的內容。我的主要問題是,因爲門票是由電子郵件內容組成的,所以在電子郵件內容的頂部包含大量無用的垃圾(主要是標籤)和無關緊要的文字,這些文字導致我的界面看起來很垃圾。使用純javascript刪除指定ID屬性前的所有元素

在我的代碼中,我用一個ID爲「ticketsTable」的表格封裝了我需要的主要內容區域,並且希望僅在此票證表格之前刪除iframe中的任何元素或內容。

通常我會使用jQuery執行此任務:

$("#earliercontent").nextUntil("#ticketsTable").andSelf().remove(); 

然而,我們的系統使用的是內置的ExtJS,所以我們希望避免任何潛在的衝突jQuery庫可能會導致這個環境。因此,我需要一種方法來處理和循環iframe的內容,刪除ticketTable id之前發生的所有元素和文本,從而消除所有不必要的內容。

我已經嘗試過這樣的:

var last = null; 
var curr = $('#page1'); 
while (curr.attr('id') != 'ticketsTable') { 
    if (last != null) { 
     last.remove(); 
    } 
    last = curr; 
    curr = curr.next(); 
} 
if (last != null) { 
    last.remove(); 
} 

來源:jQuery remove all elements until id='whatever' found

但是,由於郵件內容是可變的,有沒有具體的ID標籤,我可以指定腳本啓動的。因此,有沒有其他方法可以使用(沒有庫,只是純粹的JavaScript)在ticketTable之前刪除所有元素和內容?

我必須強調ticketTable的內容必須保持不變。這是我希望刪除的內容之前發生的內容。

回答

1

http://jsfiddle.net/yJrb7/

var parent = document.getElementById("parent"); 
var stopID = "stop"; 
var length = parent.childNodes.length, j = 0; 
for(var i=0; i < length; i++){ 
    if(parent.childNodes[j].id != stopID){ 
     parent.removeChild(parent.childNodes[j]); 
    } 
    else{ 
     j++; 
    } 
} 

當你刪除一個子節點,陣列移動,所以例如,如果你需要刪除兩個第一節點,那麼您將調用removeChild之索引0兩次。

+0

我正要把這件事情沿着這個道路放在一邊,但是當你花時間回答時,我已經將你的回答標記爲正確。 – jezzipin

相關問題