如何获取特定标题后的表格

时间:2017-07-28 20:44:55

标签: javascript jquery html

我在网站上有这样的html结构,我在Tampermonkey上编写了一个脚本(js),需要返回表格这是"在途中去" 但是那些在"在回来的路上" 所以我不在我知道如何以聪明的方式实现这一目标

我要展示的代码,因为我对此有所了解,也许有一些jquery选择器可以帮助我,但我不知道所有,并且无法找到文档

它只由2 <h4>组成,然后它可以在0和x表之间,除了顶部的跨度之外不存在id,并且表之间没有区别标志

&#13;
&#13;
<span id="idid">

          <h4 class="spacer">On way go :</h4>
          <table class="traders" cellpadding="1" cellspacing="1"> <!-- need this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
          <table class="traders" cellpadding="1" cellspacing="1"> <!-- need this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
          
          <h4 class="spacer">On way back</h4>
          <table class="traders" cellpadding="1" cellspacing="1"> <!-- not this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
         <table class="traders" cellpadding="1" cellspacing="1"> <!-- not this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
    </span>
&#13;
&#13;
&#13;

提示:不是我的网站,不能控制结构,我必须使用

1 个答案:

答案 0 :(得分:1)

您可以使用document.evaluate,使用xpath搜索文本以获取范围,然后使用nextElementSibling获取表格:

let e = document.evaluate("//h4[contains(., 'On way go')]", document, null, XPathResult.ANY_TYPE, null);
let first = e.iterateNext();
let el = first.nextElementSibling;
while (el.tagName.toUpperCase() === 'TABLE') {
    console.log(el);
    el = el.nextElementSibling;
}
<span id="idid">

          <h4 class="spacer">On way go :</h4>
          <table class="traders" cellpadding="1" cellspacing="1"> <!-- need this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
          <table class="traders" cellpadding="1" cellspacing="1"> <!-- need this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
          
          <h4 class="spacer">On way back</h4>
          <table class="traders" cellpadding="1" cellspacing="1"> <!-- not this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
         <table class="traders" cellpadding="1" cellspacing="1"> <!-- not this -->
        	    <thead><!-- --></thead>
        	    <tbody><!-- --></tbody>
         </table>	
    </span>

如果您知道文本正好是On way go :,那么您也可以使用"//h4[text()='On way go :']"作为xpath表达式。