Javascript 获取特定对象的数据<;td>;在桌子上

Javascript 获取特定对象的数据<;td>;在桌子上,javascript,html,Javascript,Html,我需要获取特定的数据,但我没有该特定的任何id或名称。您如何获取该的内容 例如: <table> <tr><td>name</td><td>praveen</td></tr> <tr><td>designation</td><td>software engineer</td></tr> </table> 纳梅普拉文 指

我需要获取特定
的数据,但我没有该特定
的任何
id
名称。您如何获取该
的内容

例如:

<table>
  <tr><td>name</td><td>praveen</td></tr>
  <tr><td>designation</td><td>software engineer</td></tr>
</table>

纳梅普拉文
指定软件工程师

是否可以从该表中获取值“名称”。。我需要使用javascript提取“软件工程师”一词。

大致如下:
(未经测试,只需快速编写代码即可给出想法)

var tables=document.getElementById('TABLE');//而不是document.all.tag
var行;
var细胞;
var-maxCells=1;
风险值指定;
若有(表格){
对于(var t=0;t快速解决方案:

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(); 
  }
}
说明:

该函数迭代文档中的所有TDs。如果它找到一个具有给定标签的TDs,比如“指定”,它将再次循环一次并返回下一个TD内容

这对您的源HTML做了一些假设。但是,如果您知道您的数据,这就足够了。

使用XPath(这里的教程,包括IE和其他浏览器的说明:)

您的示例的xpath是

//表/tr/td[text()=“指定”]/following::td

(“td后面带有文本“指定”的td,该文本位于文件某处表格中的tr中)

更简单的XPath是可能的-如果它是唯一可以包含您可以使用的“指定”的表格单元格

//td[text()=“指定”]/以下::td


编写代码来执行特定搜索的一个问题是,如果页面结构发生更改,它可能需要更改。Xpath可能根本不需要更改,如果需要更改,它只需要一行。

我更喜欢使用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');

结果是变量designontext将包含值“software engineer”。

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>

函数getText(tText){
var tds=document.getElementsByTagName(“td”);
对于(变量i=0,im=tds.length;im>i;i++){
if(tds[i].firstChild.nodeValue==tText)
返回tds[i].nextSibling.firstChild.nodeValue;
}
}

这很好,但您使用的是IE特定的代码(document.all在Firefox中不存在)。部分修复(添加正确的getElementById覆盖)没有ID的原因是什么?好问题。我以前遇到过这种情况,因为我有一些讨厌的第三方控件在没有任何标识符的情况下吐出html。您链接的教程显示了如何加载外部XML文件,而不是如何在当前文档的IE上使用XPath。。。
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');
<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>