2013-05-26 38 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

不客气!乐意效劳。 –

相关问题