[英]remove table row element in another parent depending on other parent
在将其评论为重复之前,请仔细阅读。
我有一个看起来像这样的表结构:
<td>
<table class="schedule_day_table">
<tr>
<td>1.</td>
<td><div>GO TO SCHOOL</div></td>
</tr>
<tr>
<td>.</td>
<td><div></div></td>
</tr>
<tr>
<td>3.</td>
<td><div>READ A BOOK</div></td>
</tr>
</table>
</td>
<td>
<table class="schedule_time_table">
<tr><td>08:30 - 09:15</td></tr>
<tr><td>09:25 - 10:10</td></tr>
<tr><td>11:30 - 12:15</td></tr>
</table>
</td>
如您所见,我有时间表打印出 schedule_day_table 1 和 3,但从不打印出 2,因为当时没有时间表,但 schedule_time_table 始终打印出所有时间。
我想要实现的是,如果 schedule_day_table tr td 中只有点 (.),我想删除 schedule_time_table tr 元素,我想像这样得到 output:
<td>
<table class="schedule_day_table">
<tr>
<td>1.</td>
<td><div>GO TO SCHOOL</div></td>
</tr>
<tr>
<td>3.</td>
<td><div>READ A BOOK</div></td>
</tr>
</table>
</td>
<td>
<table class="schedule_time_table">
<tr><td>08:30 - 09:15</td></tr>
<tr><td>11:30 - 12:15</td></tr>
</table>
</td>
在我的情况下,这必须在 JS 中完成。
如果您将它挂在文档加载上,这应该可以工作。
const dayRows = document.querySelectorAll('.schedule_day_table tr'); const timeRows = document.querySelectorAll('.schedule_time_table tr'); dayRows.forEach((row, i) => { //select first cell of the row let td = row.querySelector('td'); if(td.innerHTML == ".") { row.parentNode.removeChild(row); timeRows[i].parentNode.removeChild(timeRows[i]); } });
<td> <table class="schedule_day_table"> <tr> <td>1.</td> <td><div>GO TO SCHOOL</div></td> </tr> <tr> <td>.</td> <td><div></div></td> </tr> <tr> <td>3.</td> <td><div>READ A BOOK</div></td> </tr> </table> </td> <td> <table class="schedule_time_table"> <tr><td>08:30 - 09:15</td></tr> <tr><td>09:25 - 10:10</td></tr> <tr><td>11:30 - 12:15</td></tr> </table> </td>
const scheduleDayTableRows = Array.from(document.querySelectorAll(".schedule_day_table tr"));
scheduleDayTableRows.map((row) => {
if (row.querySelector("td").innerHTML === ".") {
row.remove();
}
})
首先,您需要 select 第一个表中的所有表行,然后您应该从这些行中迭代并找到第一个嵌套的 td。 如果它的innerHTML 等于“。” 您可以使用 row.remove() 删除此行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.