2013-05-26 100 views
0

我是Chrome用戶和我想定製一些網站。我有我的Chrome的Tampermonkey(類似於Firefox的Greasemonkey)擴展程序。現在我可以爲特定網站添加一些Javascript代碼。如何獲得Tampermonkey中的表格單元值?

現在,我只想從某個表中獲取價值並在彈出窗口中顯示它。的HTML代碼

例子:

<div id="Content"> 

<table><tbody><tr> 
<td>Text number 1</td> 
<td>Text number 2</td> 
</tr></tdoby></table> 

<table><tbody><tr> 
<td>Text number 3</td> 
<td>Text number 4</td> 
</tr></tdoby></table> 

<table><tbody><tr> 
<td>Text number 5</td> 
<td>Text number 6</td> 
</tr></tdoby></table> 

</div> 

到目前爲止我的代碼:

var xpath = "id('Content')/table[1]/tbody/tr/td[2]"; 
var result = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null); 
myWin=window.open('','','width=400,height=400'); 
myWin.document.write(result); 

,但它並沒有顯示此 「TD」 的內容(文本號2)

任何理念?

+0

凡定義'result'? –

+0

抱歉我錯過了代碼,現在檢查 – maniootek

+0

在這種情況下,XPath是否需要你?或者你可以使用別的東西嗎?請記住它在IE中不起作用! –

回答

0

我已經根據您提供的XPath創建了您的HTML結構。 既然你不需要的XPath,我會用正常的元素訪問:

HTML

<div id="Content"> 
    <table> 
     <tbody> 
      <tr> 
       <td>Text number 1</td> 
       <td>Text number 2</td> 
      </tr> 
     </tbody> 
    </table> 
    <table> 
     <tbody> 
      <tr> 
       <td>Text number 3</td> 
       <td>Text number 4</td> 
      </tr> 
     </tbody> 
    </table> 
    <table> 
     <tbody> 
      <tr> 
       <td>Text number 5</td> 
       <td>Text number 6</td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

的Javascript

var div = document.getElementById('Content'), 
    table = div.getElementsByTagName('table')[1], 
    tr = table.getElementsByTagName('tr')[0], 
    td = tr.getElementsByTagName('td')[1]; 
alert(td.innerHTML); 

工作JSFiddle

+0

如果我在表格中有表格,該怎麼辦? – maniootek

+0

你必須根據你想要做的改變JS代碼。如果你有基礎知識,你可以毫無困難地做到這一點。如果你不這樣做,最好從DOM元素訪問 –

+0

例子:id('Content')/ table [1]/tbody/tr/td [2]/table [2]/tbody/tr [ 2]/td/table/tbody/tr/td/table/tbody/tr/td – maniootek

2

這是不是很你如何使用XPath。 result,在這種情況下是iterator

的代碼會是這樣的:

var xpath = "id('Content')/table[1]/tbody/tr/td[2]"; 
var result = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null); 
var node = result.iterateNext(); 
var nodeTxt = node.textContent 
var myWin = window.open('','','width=400,height=400'); 
myWin.document.write (nodeTxt); 

除,不要使用XPath!由於您剛開始使用,請使用document.querySelector或更好的方式使用jQuery

這裏的CSS selector方式:

var node = document.querySelector (
    "#Content > table:first-child > tbody > tr > td:nth-child(2)" 
); 
var nodeTxt = node.textContent 
alert (nodeTxt); 

注意。使用alert()或jQuery UI對話框來處理這種事情。如果可以幫助,請避免嘗試使用window.open

這裏的一個完整的腳本,顯示了jQuery的方式:

// ==UserScript== 
// @name  _YOUR_SCRIPT_NAME 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. 
*/ 
var nodeTxt = $("#Content > table:first > tbody > tr > td:eq(1)").text(); 
alert (nodeTxt); 
+0

非常感謝你! – maniootek

+0

不客氣!樂意效勞。 –

相關問題