gpt4 book ai didi

javascript - 从元素内部获取 tr

转载 作者:行者123 更新时间:2023-11-28 03:23:39 25 4
gpt4 key购买 nike

这是一个简单的 HTML 代码:

<html>
<head>
</head>
<body>
<input id="pathText" type="text" name="Summary" placeholder="Summary"><br>
<input id="groupText" type="text" name="Groups" placeholder="Groups"><br>
<input id="searchButton" type="button" value="Search" onclick="myFunction()"><br>
<table>
<tr>
<details class="mainDetails">
<summary><b>First Summary</b></summary>
<ul>
<details>
<summary><b>Groups</b></summary>
<ul>
<li>group A of First</li>
<li>group B of First</li>
</ul>
</details>
<details>
<summary><b>First People</b></summary>
<ul>
<li>John</li>
<li>Mark</li>
</ul>
</details>
</ul>
</details>
</tr>
<tr>
<details class="mainDetails">
<summary><b>Second Summary</b></summary>
<ul>
<details>
<summary><b>Groups</b></summary>
<ul>
<li>group A of Second</li>
<li>group B of Second</li>
<li>group C of Second</li>
</ul>
</details>
<details>
<summary><b>Second People</b></summary>
<ul>
<li>Alex</li>
</ul>
</details>
</ul>
</details>
</tr>
</table>

<script>

function myFunction(){
var pathString = document.getElementById('pathText').value;
var summariesElements=document.getElementsByTagName("summary");
for(i=0;i<summariesElements.length;i++){
if(summariesElements[i].innerHTML.indexOf(pathString) !== -1){
if(summariesElements[i].parentElement.className === "mainDetails"){
alert(summariesElements[i].parentElement.className);
summariesElements[i].parentElement.style.display = "none";
}
}
}
}
</script>
</body>
</html>

我想从详细信息中隐藏 tr 元素,该元素的摘要由 pathText input 中的 String 组成。在我的代码中,我知道如何通过使用 myFunction() 隐藏它来获取 mainDetails 元素。

我尝试添加 class="trClass" 并修改此函数以获取 tr 元素并使用 display="none"。我使用类似的东西:

function myFunction(){
var pathString = document.getElementById('pathText').value;
var summariesElements=document.getElementsByTagName("summary");
for(i=0;i<summariesElements.length;i++){
if(summariesElements[i].innerHTML.indexOf(pathString) !== -1){
alert(summariesElements[i].parentElement.parentElement.className);
if(summariesElements[i].parentElement.parentElement.className === "trClass"){
summariesElements[i].parentElement.parentElement.style.display = "none";
}
}
}
}

但是有一个问题,因为 summariesElements[i].parentElement.parentElement 不返回 tr 元素,它只返回 body .

如何更改我的代码并使用它从我的中隐藏tr

最佳答案

您错过了行的 td(列)元素。一行必须至少有一列。

<tr>
<td>
<!-- content goes here -->
</td>
</tr>

此外,获取行引用而不是

summariesElements[i].parentElement.parentElement

你可以使用

summariesElements[i].closest('tr')

请查看JsFiddle演示如何使用 jQuery 实现同样的效果

这里是你的代码修复,主要是添加td标签

<html>

<head>
</head>

<body>
<input id="pathText" type="text" name="Summary" placeholder="Summary"><br>
<input id="groupText" type="text" name="Groups" placeholder="Groups"><br>
<input id="searchButton" type="button" value="Search" onclick="myFunction()"><br>
<table>
<tr>
<td>
<details class="mainDetails">
<summary><b>First Summary</b></summary>
<ul>
<details>
<summary><b>Groups</b></summary>
<ul>
<li>group A of First</li>
<li>group B of First</li>
</ul>
</details>
<details>
<summary><b>First People</b></summary>
<ul>
<li>John</li>
<li>Mark</li>
</ul>
</details>
</ul>
</details>
</td>
</tr>
<tr>
<td>
<details class="mainDetails">
<summary><b>Second Summary</b></summary>
<ul>
<details>
<summary><b>Groups</b></summary>
<ul>
<li>group A of Second</li>
<li>group B of Second</li>
<li>group C of Second</li>
</ul>
</details>
<details>
<summary><b>Second People</b></summary>
<ul>
<li>Alex</li>
</ul>
</details>
</ul>
</details>
</td>
</tr>
</table>

<script>
function myFunction() {
var pathString = document.getElementById('pathText').value;
var summariesElements = document.getElementsByTagName("summary");
for (i = 0; i < summariesElements.length; i++) {
if (summariesElements[i].innerHTML.indexOf(pathString) !== -1) {
if (summariesElements[i].parentElement.className === "mainDetails") {
//alert(summariesElements[i].parentElement.className);
summariesElements[i].parentElement.style.display = "none";
}
}
}
}
</script>
</body>

</html>

关于javascript - 从元素内部获取 tr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45099277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com