如何在同时含指定文本的表格行中获取锚点标签ID?
问题描述
我有一个ID为PTSRCHRESULTS的表格,所有行元素均为锚点/链接。我需要获取同时包含"Undergrad"和"1"的行中任意元素的ID,该需求用于Power Automate Desktop,可通过运行JavaScript实现。
以本例来说,我需要获取表格第6行的特定ID。我知道如何定位单个条件的元素,例如:
var element = $( "a:contains('Undergrad')" );
但不知道如何将两个条件组合起来,求解答!
附上经过编辑的表格代码示例供参考:
<table id="PTSRCHRESULTS" class="PSSRCHRESULTSWBO" width="100%" cellspacing="0" cellpading="1" summary="Student Program/Plan Search Results. Row 1-7 of 7"> <tbody> <th scope="row" class="PSSRCHRESULTSODDROW"><a id="SEARCH_RESULT1" name="RESULT1$0" aria-describedby="app_label PSSRCHSUBTITLE PSSRCHINSTRUCTIONS" href="javascript:submitAction_win0(document.win0,'#ICRow0');" tabindex="54" class="PSSRCHRESULTSODDROW">00013XXXX</a></th> <td class="PSSRCHRESULTSODDROW"><a name="RESULT2$0" id="RESULT2$0" href="javascript:submitAction_win0(document.win0,'#ICRow0');" class="PSSRCHRESULTSODDROW">Postgrad</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT3$0" id="RESULT3$0" href="javascript:submitAction_win0(document.win0,'#ICRow0');" class="PSSRCHRESULTSODDROW">1</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT4$0" id="RESULT4$0" href="javascript:submitAction_win0(document.win0,'#ICRow0');" class="PSSRCHRESULTSODDROW">MMedSonog</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT5$0" id="RESULT5$0" href="javascript:submitAction_win0(document.win0,'#ICRow0');" class="PSSRCHRESULTSODDROW">TestPlace</a></td> </tr> <tr align="left"> <th scope="row" class="PSSRCHRESULTSEVENROW"><a name="RESULT1$1" id="RESULT1$1" href="javascript:submitAction_win0(document.win0,'#ICRow1');" tabindex="55" class="PSSRCHRESULTSEVENROW">00013403U</a></th> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT2$1" id="RESULT2$1" href="javascript:submitAction_win0(document.win0,'#ICRow1');" class="PSSRCHRESULTSEVENROW">Postgrad</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT3$1" id="RESULT3$1" href="javascript:submitAction_win0(document.win0,'#ICRow1');" class="PSSRCHRESULTSEVENROW">0</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT4$1" id="RESULT4$1" href="javascript:submitAction_win0(document.win0,'#ICRow1');" class="PSSRCHRESULTSEVENROW">GDMedRad</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT5$1" id="RESULT5$1" href="javascript:submitAction_win0(document.win0,'#ICRow1');" class="PSSRCHRESULTSEVENROW">TestPlace</a></td> </tr> <tr align="left"> <th scope="row" class="PSSRCHRESULTSODDROW"><a name="RESULT1$2" id="RESULT1$2" href="javascript:submitAction_win0(document.win0,'#ICRow2');" tabindex="56" class="PSSRCHRESULTSODDROW">00013403U</a></th> <td class="PSSRCHRESULTSODDROW"><a name="RESULT2$2" id="RESULT2$2" href="javascript:submitAction_win0(document.win0,'#ICRow2');" class="PSSRCHRESULTSODDROW">Undergrad</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT3$2" id="RESULT3$2" href="javascript:submitAction_win0(document.win0,'#ICRow2');" class="PSSRCHRESULTSODDROW">4</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT4$2" id="RESULT4$2" href="javascript:submitAction_win0(document.win0,'#ICRow2');" class="PSSRCHRESULTSODDROW">BMedRadSc</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT5$2" id="RESULT5$2" href="javascript:submitAction_win0(document.win0,'#ICRow2');" class="PSSRCHRESULTSODDROW">TestPlace</a></td> </tr> <tr align="left"> <th scope="row" class="PSSRCHRESULTSEVENROW"><a name="RESULT1$3" id="RESULT1$3" href="javascript:submitAction_win0(document.win0,'#ICRow3');" tabindex="57" class="PSSRCHRESULTSEVENROW">00013403U</a></th> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT2$3" id="RESULT2$3" href="javascript:submitAction_win0(document.win0,'#ICRow3');" class="PSSRCHRESULTSEVENROW">Undergrad</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT3$3" id="RESULT3$3" href="javascript:submitAction_win0(document.win0,'#ICRow3');" class="PSSRCHRESULTSEVENROW">3</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT4$3" id="RESULT4$3" href="javascript:submitAction_win0(document.win0,'#ICRow3');" class="PSSRCHRESULTSEVENROW">BMedRadSc</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT5$3" id="RESULT5$3" href="javascript:submitAction_win0(document.win0,'#ICRow3');" class="PSSRCHRESULTSEVENROW">TestPlace</a></td> </tr> <tr align="left"> <th scope="row" class="PSSRCHRESULTSODDROW"><a name="RESULT1$4" id="RESULT1$4" href="javascript:submitAction_win0(document.win0,'#ICRow4');" tabindex="58" class="PSSRCHRESULTSODDROW">00013403U</a></th> <td class="PSSRCHRESULTSODDROW"><a name="RESULT2$4" id="RESULT2$4" href="javascript:submitAction_win0(document.win0,'#ICRow4');" class="PSSRCHRESULTSODDROW">Undergrad</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT3$4" id="RESULT3$4" href="javascript:submitAction_win0(document.win0,'#ICRow4');" class="PSSRCHRESULTSODDROW">2</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT4$4" id="RESULT4$4" href="javascript:submitAction_win0(document.win0,'#ICRow4');" class="PSSRCHRESULTSODDROW">BMidwifery</a></td> <td class="PSSRCHRESULTSODDROW"><a name="RESULT5$4" id="RESULT5$4" href="javascript:submitAction_win0(document.win0,'#ICRow4');" class="PSSRCHRESULTSODDROW">TestPlace</a></td> </tr> <tr align="left"> <th scope="row" class="PSSRCHRESULTSEVENROW"><a name="RESULT1$5" id="RESULT1$5" href="javascript:submitAction_win0(document.win0,'#ICRow5');" tabindex="59" class="PSSRCHRESULTSEVENROW">00013403U</a></th> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT2$5" id="RESULT2$5" href="javascript:submitAction_win0(document.win0,'#ICRow5');" class="PSSRCHRESULTSEVENROW">Undergrad</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT3$5" id="RESULT3$5" href="javascript:submitAction_win0(document.win0,'#ICRow5');" class="PSSRCHRESULTSEVENROW">1</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT4$5" id="RESULT4$5" href="javascript:submitAction_win0(document.win0,'#ICRow5');" class="PSSRCHRESULTSEVENROW">BCommerce</a></td> <td class="PSSRCHRESULTSEVENROW"><a name="RESULT5$5" id="RESULT5$5" href="javascript:submitAction_win0(document.win0,'#ICRow5');" class="PSSRCHRESULTSEVENROW">TestPlace</a></td> </tr> </tr> </tbody> </table>
解决方案
要筛选出同时包含"Undergrad"和"1"的行,可通过以下两种方式实现:
方式一:链式筛选写法
直接通过has()方法叠加条件,定位符合要求的行后获取元素ID:
// 定位同时包含两个指定文本的行 var targetRow = $("#PTSRCHRESULTS tr").has("a:contains('Undergrad')").has("a:contains('1')"); // 获取该行第一个a元素的ID,可根据需求调整元素位置,比如用eq(2)获取第三个元素 var targetId = targetRow.find('a').attr('id'); console.log(targetId); // 示例中输出 RESULT1$5
方式二:遍历检查写法
先定位包含单个条件的元素,再遍历其所在行并检查第二个条件:
// 遍历所有包含Undergrad的a元素所在的行 $("#PTSRCHRESULTS a:contains('Undergrad')").closest('tr').each(function() { var currentRow = $(this); // 检查当前行是否包含文本为1的a元素 if (currentRow.find("a:contains('1')").length > 0) { // 获取该行任意元素的ID,这里取第一个a元素 var targetId = currentRow.find('a').attr('id'); console.log(targetId); // 示例中输出 RESULT1$5 // 若只需第一个匹配结果,可直接终止循环 return false; } });
代码说明
$("#PTSRCHRESULTS tr"):定位表格内所有行元素.has("a:contains('文本')"):筛选出包含指定文本的a元素所在的行.closest('tr'):从当前元素向上查找最近的tr父元素.find('a').attr('id'):获取目标行内第一个a元素的ID,可通过eq(index)指定获取第几个元素的ID
内容的提问来源于stack exchange,提问作者beebul
相关产品推荐
相关产品推荐

