首页 > 解决方案 > 遍历所有 div 并在任何 td 中搜索,如果找到获取下一秒 td 值的值

问题描述

下面是我的html文件。

<!DOCTYPE html> <html>
         <table id="table1">

      <div id="157">
         <br>
         <table>
            <tr>
               <td>Test ID</td>
               <td>:</td>
               <td>157</td>
            </tr>
            <tr>
               <td>Test Plan Name</td>
               <td>:</td>
               <td>Validation-Current Day</td>
            </tr>
            <tr>        </div>
                <div id="200">
         <br>
         <table>
            <tr>
               <td>Test ID</td>
               <td>:</td>
               <td>157</td>
            </tr>
            <tr>
               <td>Test Plan Name</td>
               <td>:</td>
               <td>Eligibility Current Day</td>
            </tr>
            <tr>        </div>


         </table>
      </div>

如果发现我想搜索“测试 ID” 我想获得“157”,就像我想获得测试计划名称一样。我尝试了下面的代码,但在“验证-当前日期”的情况下给出“157”,资格当前日期”

下面是我的代码

<!DOCTYPE html>

<html lang="en">
  <head>

    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <script>
        var resp = "";
var htmlstring = "";
var template = "";
var testIDArray = [];
var testPlanNameArray = [];

$(document).ready(function() {
 $("#Analyse").click(function() {
    $.ajax({
   url: 'home.php',
   success: function(response) {
    resp = response;
    alert(resp);
    $.get("new.php?&filename=" + resp).done(function(data1) {
     htmlstring = data1;

     $('<div />', {
      html: htmlstring
     }).find('div').each(function() {

        if($(this).is(':contains("FAIL")'))
        {
                 if($(this).is(':contains("Test ID")'))
                 {
                         testIDArray.push($(this).find('td:eq(2)').text().trim());
                         console.log($(this).find('td:eq(2)').text().trim());
                         console.log($(this).closest('td').next('td').text().trim() );
                 }  
                 if($(this).is(':contains("Test Plan Name")'))
                 {
                         testPlanNameArray.push($(this).find('td:eq(2)').text().trim());
                        console.log($(this).is(':contains("Test Plan Name")').next('td').text().trim());
                    console.log($(this).closest('td').next('td').text().trim() );     // this is also returning 157,158 where as I'm expecting "Validation-Current Day,Eligibility Current Day"
                 }


        }
     })

    });


   }
  });

 });
}); 
    </script>
  </head>
  <body>

<button class="btn btn-lg btn-success btn-block" id="Analyse">Analyse</button>

 <p id="demo"></p>
</body>
</html>

我真的被困住了。请帮忙。提前致谢。

如果发现我想搜索“测试 ID” 我想获得“157”,就像我想获得测试计划名称一样。我尝试了下面的代码,但在“验证-当前日期”的情况下给出“157”,资格当前日期”

标签: javascriptjqueryhtml-tabletags

解决方案


你的html有一些变化

<div id="157">
     <br>
     <table>
        <tr>
           <td>Test ID</td>
           <td>:</td>
           <td>157</td>
        </tr>
        <tr>
           <td>Test Plan Name</td>
           <td>:</td>
           <td>Validation-Current Day</td>
        </tr>
      </table>   
    </div>

    <div id="200">
     <br>
     <table>
        <tr>
           <td>Test ID</td>
           <td>:</td>
           <td>157</td>
        </tr>
        <tr>
           <td>Test Plan Name</td>
           <td>:</td>
           <td>Eligibility Current Day</td>
        </tr>
      </table>      
      </div>

在上面的 html 中,如果要将此 html 添加到表中,则还需要添加 tr,td。

更改您的 JS 每个循环代码,如下所示

$("div").each(function() {

    if($(this).find("table tr:first td:first").text() == "Test ID")
    {
      testIDArray.push($(this).find("table tr:first td:eq(2)").text().trim());
    }  
    if($(this).find("table tr:eq(1) td:first").text() == "Test Plan Name")
    {
      testPlanNameArray.push($(this).find('table tr:eq(1) td:eq(2)').text().trim());
    } 

 })

alert(testIDArray)
alert(testPlanNameArray)

推荐阅读