javascript - Tampermonkey 用户脚本通过关键字搜索获取表格单元格数据?
问题描述
我是使用 Tampermonkey 并尝试从该行包含的表中获取员工姓名的新手data-akfk-type="event">AHOD
例如,在下表中,这应该返回'Clare'
,并且'Ivan'
因为每一行都有data-akfk-type="event">AHOD
该表将始终有两行包含'AHOD'
但它们可以在表中的任何行上。
<table id="iCalTbl" class="groupCalendar">
<tr id="clare@test.com_data_row" data-dp-employeeid="clare@test.com" class="iCalTblRow">
<td data-dp-col="0" class="iCalTblCell iCalTblEmployeeCell" id="header-clare@test.com">
<div class="rowHeaderCell"><a href="#" title="Display employee details"
data-akfk-type="employee" id="clare@test.com">
Clare</a> <img src="images/flags/country/spain.png">
</div>
</td>
<td data-dp-col="1" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="2" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
<td data-dp-col="18" class="tblCalendDailyViewMain iCalTblCellNow">.</td>
<td data-dp-col="19" class="tblCalendDailyViewMain iCalTblCellNow">.</td>
<!-- ... -->
<td data-dp-col="29" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="30" class="tblCalendDailyViewMain">
<div data-akfk-type="cell" data-dp-employeeid="clare@test.com">
<div class="shiftlightblue eventDailyContainer" data-akfk-type="eventContainer">
<span id="event_1601787" data-akfk-type="event">AHOD</span></div>
</div>
</td>
<td data-dp-col="31" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
</tr>
<tr id="sally@test.com_data_row" data-dp-employeeid="sally@test.com" class="iCalTblRow">
<td data-dp-col="0" class="iCalTblCell iCalTblEmployeeCell" id="header-sally@test.com">
<div class="rowHeaderCell"><a href="#" title="Display employee details"
data-akfk-type="employee" id="sall@test.com">
Sally</a> <img src="images/flags/country/united_arab_emirates.png">
</div>
</td>
<td data-dp-col="1" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="2" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
<td data-dp-col="18" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="19" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
<td data-dp-col="29" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="30" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="31" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
</tr>
<tr id="ivan@test.com_data_row" data-dp-employeeid="ivan@test.com" class="iCalTblRow">
<td data-dp-col="0" class="iCalTblCell iCalTblEmployeeCell" id="header-ivan@test.com">
<div class="rowHeaderCell"><a href="#" title="Display employee details"
data-akfk-type="employee" id="ivan@test.com">Ivan</a> <img src="images/flags/country/italy.png">
</div>
</td>
<td data-dp-col="1" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="2" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
<td data-dp-col="18" class="tblCalendDailyViewMain iCalTblCellNow">.</td>
<td data-dp-col="19" class="tblCalendDailyViewMain iCalTblCellNow">.</td>
<!-- ... -->
<td data-dp-col="29" class="tblCalendDailyViewMain">.</td>
<td data-dp-col="30" class="tblCalendDailyViewMain">
<div data-akfk-type="cell" data-dp-employeeid="ivan@test.com">
<div class="shiftlightblue eventDailyContainer" data-akfk-type="eventContainer">
<span id="event_1601789" data-akfk-type="event">
AHOD</span></div>
</div>
</td>
<td data-dp-col="31" class="tblCalendDailyViewMain">.</td>
<!-- ... -->
</tr>
</table>
我试过了:
document.getElementsByClassName("groupCalendar")[0].textContent
这给了我所有的文本内容
“ 000102030405060708091011121314151617181920212223克莱尔 AHOD 莎莉伊万 AHOD ”
然后使用 split on'AHOD'
尝试通过 split 获取 value first value。
我怀疑我需要将搜索范围缩小到表的 DOM 元素而不是整个表。然后在与搜索匹配的行中抓取和属性。
我不知道如何搜索关键字'AHOD'
然后获取该员工的姓名?
解决方案
我使用了这段代码(如下),但也会探索其他建议并尝试向他们学习:
var results = '',
trs = document.getElementsByTagName('tr');
for (var i = 0; i < trs.length; i++) {
if (trs[i].innerHTML.indexOf('data-akfk-type="event">AHOD') > -1) {
results += trs[i].getElementsByTagName('a')[0].textContent + "\n";
}
}
console.log("Results: \n" + results)
感谢您的所有帮助,非常感谢。
推荐阅读
- firebase - 使 firebase 域指向 EC2 GCP 实例 IP 地址
- matlab - 在分类文本问题上实施 BERT 时出现的错误
- javascript - PR 评论不适用于 lighthouse-check-action(github 操作)
- python - 确保所有基于字段的列表项有效地存在于表中
- python - 对每一行的列值求和
- c# - c# system.componentmodel.win32exception access is denied when访问explorer.exe获取当前登录用户名
- excel - 将 Qlikview 十六进制日期转换为普通日期
- c++ - 使用 GNSS-SDR 的 GLONASS 信号发生器
- arrays - 基于多种类型过滤数组
- django - 基于用户角色的全局搜索查询参数