我需要获取特定<td>
的数据,但我对该特定id
没有任何name
或<td>
。你如何得到<td>
的内容?
例如:
<table>
<tr><td>name</td><td>praveen</td></tr>
<tr><td>designation</td><td>software engineer</td></tr>
</table>
是否可以从此表中获取值“指定”..我需要使用javascript提取“软件工程师”一词。
答案 0 :(得分:3)
我更喜欢使用jQuery为这类任务完成所有繁重工作。
例如,以下函数将返回您要搜索的相同类型的下一个元素的文本:
function GetNextChildText(tagToFind, valueToFind) {
var nextText = "";
$(tagToFind).each(function(i) {
if ($(this).text() == valueToFind) {
if ($(this).next() != null && $(this).next() != undefined) {
nextText = $(this).next().text();
}
}
});
return (nextText);
}
因此,对于您的示例表,您返回指定的调用可以是:
var designationText = GetNextChildText('td', 'designation');
结果是变量designationText将包含值'software engineer'。
答案 1 :(得分:2)
快速解决方案:
function GetTdContent(label)
{
var TDs = document.getElementsByTagName("TD");
var foundFlag = false;
for (i = 0; i < TDs.length; i++)
{
if (foundFlag) return TDs[i].innerHTML;
foundFlag = TDs[i].innerHTML.toLower() == label.toLower();
}
}
其他地方打来电话:
var value = GetTdContent("designation");
说明:
该函数迭代文档中的所有TD。如果找到具有给定标签的一个,说“指定”,它会再次循环并返回下一个TD内容。
这对您的源HTML做了一些假设。如果你知道你的数据,那就足够了。
答案 2 :(得分:1)
以下内容:
(没有经过测试,只是快速编写代码)
var tables = document.getElementById('TABLE'); // instead of document.all.tag
var rows;
var cells;
var maxCells = 1;
var designation;
if (tables) {
for (var t=0; t<tables.length; t++) {
rows = tables[t].all.tags('TR');
if (tables[t].all.tags('TABLE').length == 0) {
for (var r=0; r<rows.length; r++) {
if (rows[r].innerText != '') {
cells = rows[r].all.tags('TD');
for (var c=0; c<cells.length; c++) {
if (cells[c].innerText == 'designation' && c<(cells.length-1)) {
designation = cells[c+1].innerText;
}
}
}
}
}
}
}
由于document.all是特定于IE的,您应该使用getElementById,而使用以下redefine that function for IE:
if (/msie/i.test (navigator.userAgent)) //only override IE
{
document.nativeGetElementById = document.getElementById;
document.getElementById = function(id)
{
var elem = document.nativeGetElementById(id);
if(elem)
{
//make sure that it is a valid match on id
if(elem.attributes['id'].value == id)
{
return elem;
}
else
{
//otherwise find the correct element
for(var i=1;i<document.all[id].length;i++)
{
if(document.all[id][i].attributes['id'].value == id)
{
return document.all[id][i];
}
}
}
}
return null;
};
}
答案 3 :(得分:0)
使用XPath(这里的教程,包括IE和其他浏览器的说明:http://www.w3schools.com/XPath/xpath_examples.asp)
您的示例的xpath是
//表/ TR / TD [文本()= “指定”] /以下:: TD
(“td跟随td,带有文本”指定“,它位于文档中某个表格的tr中”)
更简单的X路径是可能的 - 如果它是唯一可以包含'指定'的表格单元格,您可以使用
// TD [文本()= “指定”] /以下:: TD
编写代码来执行特定搜索的一个问题是,如果页面结构发生变化,它可能需要更改。 Xpath可能根本不需要改变,如果确实如此,它只有一行。
答案 4 :(得分:0)
Tomalak更快一点:
<script type="text/javascript">
function getText(tText){
var tds = document.getElementsByTagName("td");
for(var i=0, im=tds.length; im>i; i++){
if(tds[i].firstChild.nodeValue == tText)
return tds[i].nextSibling.firstChild.nodeValue;
}
}
</script>