2016-11-17 51 views
1

我想获得它是由string.Let搜索元素的下一个元素中的文本我通过代码如果元素按特定字符串搜索,如何获得nextcond的值?

<table id="myTable"> 
 
<tbody> 
 
<tr> 
 
    <th>Name</th> 
 
    <td>foo</td> 
 
    </tr> 
 
<tr> 
 
    <th>age</th> 
 
    <td>20</td> 
 
    </tr> 
 
</tbody> 
 
</table>

我有,如果“时代”存在搜索字符串解释。然后返回20作为它的值。 我试图通过包含搜索字符串:但无法访问值

+0

不要THEI访问元素内容。使用'id'或'class'属性将它们正确标记为您的目标。 – haim770

+0

是的,我知道。但我必须以这种方式进行搜索。你能帮我 – shoaib

回答

3

你可以使用jQuery next()contains selector达到你所需要的。

$(document).ready(function() { 
 
    console.log($("th:contains(age)").next().html()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="myTable"> 
 
    <tbody> 
 
    <tr> 
 
     <th>Name</th> 
 
     <td>foo</td> 
 
    </tr> 
 
    <tr> 
 
     <th>age</th> 
 
     <td>20</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

感谢它的快速和容易。 – shoaib

0

该解决方案将遍历所有tr的子项的元素,并检查其文本是否与搜索相同。如果相等,则将下一个元素分配给nextElem

let search = "age"; 
 
let nextElem; 
 

 
$('#myTable tr').children().each(function() { 
 
    if ($(this).text() === search) 
 
    nextElem = $(this).next(); 
 
}); 
 

 
console.log(nextElem.text())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="myTable"> 
 
<tbody> 
 
<tr> 
 
    <th>Name</th> 
 
    <td>foo</td> 
 
    </tr> 
 
<tr> 
 
    <th>age</th> 
 
    <td>20</td> 
 
    </tr> 
 
</tbody> 
 
</table>

+1

谢谢你的答案。 – shoaib

0

你已经设置为显示名称 - 值对,其中每个名字被包含在<th>...</th>及其相应的值是包含在<td>...</td>表。

所以一个方法,这是简单的文档对象模型导航,使用:

  • getElementsByTagName('th')
  • getElementsByTagName('td')

var table = document.getElementsByTagName('table')[0]; 
 
var button = document.getElementsByTagName('button')[0]; 
 
var summary = document.getElementsByClassName('summary')[0]; 
 
var searchedFor = summary.getElementsByTagName('p')[0]; 
 
var correspondingResult = summary.getElementsByTagName('p')[1]; 
 

 

 
function displayResult() { 
 
var returnValue = ''; 
 
var searchString = document.getElementsByTagName('input')[0].value; 
 
var lowerCaseSearchString = searchString.toLowerCase(); 
 
var tableRows = document.getElementsByTagName('tr'); 
 

 
for (var i = 0; i < tableRows.length; i++) { 
 
    var name = tableRows[i].getElementsByTagName('th')[0].textContent.toLowerCase(); 
 

 
    if (name === lowerCaseSearchString) { 
 
     returnValue = tableRows[i].getElementsByTagName('td')[0].textContent; 
 
    } 
 

 
    if (returnValue === '') { 
 
     returnValue = 'No Matches'; 
 
    } 
 
} 
 

 
searchedFor.textContent = 'You searched for... ' + '"' + searchString + '"'; 
 
correspondingResult.textContent = 'The corresponding result is... ' + '"' + returnValue + '"'; 
 
} 
 

 
button.addEventListener('click',displayResult,false);
table, .search-panel { 
 
display: inline-block; 
 
vertical-align: top; 
 
margin-right: 24px; 
 
} 
 

 
table { 
 
border: 2px solid rgb(127,127,127); 
 
} 
 

 
th, td { 
 
padding: 12px; 
 
} 
 

 
th { 
 
text-align: left; 
 
background-color: rgb(191,191,191); 
 
} 
 

 
th::after { 
 
content:':'; 
 
} 
 

 
.search-results p span { 
 
font-weight:bold; 
 
}
<table> 
 
<tbody> 
 
<tr> 
 
<th>Name</th> 
 
<td>Foo</td> 
 
</tr> 
 

 
<tr> 
 
<th>Age</th> 
 
<td>20</td> 
 
</tr> 
 

 
</tbody> 
 
</table> 
 

 
<div class="search-panel"> 
 
<form> 
 
<input type="text" placeholder="Enter your string here..." value="" /> 
 
<button type="button">Search for String</button> 
 
</form> 
 

 
<div class="summary"> 
 
<p>You searched for... </p> 
 
<p>The corresponding result is... </p> 
 
</div> 
 
</div>

相关问题