2009-10-16 75 views
1

這裏是我的問題:有一個內部問題跟蹤系統,它有一個漂亮的總結頁面(開發人員打開的問題數量等)。但是,緊湊的彙總表由樣板文件(導航菜單,搜索框等)我想將彙總表嵌入到我們團隊的頁面中,但不包括周圍的文件。使用<iframe>標記將是一個微不足道的解決方案,如果它不是我感興趣的表格附近的垃圾。幸運的是,所討論的HTML表格已被很好地描述:它被定義爲一個常規<表>標記它甚至有一個唯一的ID分配給它。我想知道是否有一個涉及DOM操作的簡單JavaScript技巧,我可以使用它來手術提取我在iframe中感興趣的表。這樣,只要有人檢查我們團隊的主頁,報告就會始終處於最新狀態。使用JavaScript從HTML中刮掉單個表格

回答

1

如果你使用jQuery,你可以很容易地拉表代碼。現在,如果表格包含很少的腳本塊,事情可能會變得很奇怪;同樣,如果它依賴於某些樣式表,請確保您的目標頁面也有這些樣式表。

表是由某種塊級元素(a或某物)包圍的嗎?如果是這樣,那麼你可以加載頁面(AJAX或隱藏的iframe),通過「id」查找表,遍歷父級,然後將其html()值移至目標塊。如果沒有塊級別的父級適合於此,那麼您可以嘗試在目標位置重新構建一個空表標記,然後從源表中拉出html()並將其放在那裏;然而,事情開始變得有點奇怪,有時是因爲一些瀏覽器以有趣的方式處理表格佈局。但可以工作。

+0

這就是我所做的,還有一個額外的技巧,即將附件上傳到問題跟蹤器,以便我的JavaScript將從摘要報告的相同域中提供。 – 2009-10-18 16:09:39

0

對你來說簡單一點就可以展開?

function scrapeTable(tableId) 
     { 
      var tables = document.getElementsByTagName("table"); 
      for (var i = 0; i < tables.length; i++) 
      { 
       if (tables[i].id == tableId) 
       { 
        alert("<table>" + tables[i].innerHTML + "</table>"); 
       } 
      } 
     } 
+0

道歉格式... – 2009-10-16 14:39:52

+0

這一工程,但該表的「innerHTML的()」獲不包括表格標籤本身。這可能不是一個巨大的交易,只要瀏覽器可以將表空間放入新建的(空)表中即可。 – Pointy 2009-10-16 14:42:20

1

團隊和問題跟蹤器是否位於同一個域/地址?

如果不是,那麼您可能需要修改問題跟蹤器才能獲得所需的結果。出於安全原因,大多數瀏覽器都不允許您修改/訪問不同的域。

如果他們是在同一個域,那麼你很可能使用jQuery的負載與選擇:

$("#destination").load("/path/to/table/ #tableid"); 
+0

這是一個非常好的主意 - 我忘了load()的選擇器技巧。 – Pointy 2009-10-16 15:25:52