首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取表中特定<td>的数据

获取表中特定<td>的数据
EN

Stack Overflow用户
提问于 2008-11-03 07:10:14
回答 5查看 2.2K关注 0票数 2

我需要获取特定<td>的数据,但我没有针对该特定<td>的任何idname。如何获取该<td>的内容

例如:

代码语言:javascript
复制
<table>
  <tr><td>name</td><td>praveen</td></tr>
  <tr><td>designation</td><td>software engineer</td></tr>
</table>

有没有可能从这个表中得到“指定”的值..我需要使用javascript提取“软件工程师”这个词。

EN

回答 5

Stack Overflow用户

发布于 2008-11-03 08:29:32

我更喜欢使用jQuery来完成这类任务的所有繁重任务。

例如,下面的函数将返回您正在搜索的相同类型的下一个元素的文本:

代码语言:javascript
复制
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);
}

因此,对于您的示例表,您返回指定的调用可能是:

代码语言:javascript
复制
var designationText = GetNextChildText('td', 'designation');

结果是变量designationText将包含值'software engineer‘。

票数 3
EN

Stack Overflow用户

发布于 2008-11-03 08:14:03

一个快速的解决方案:

代码语言:javascript
复制
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(); 
  }
}

其他地方的呼叫:

代码语言:javascript
复制
var value = GetTdContent("designation");

解释:

该函数迭代文档中的所有TD。如果它找到一个带有给定标签的标签,比如"designation",它会再次循环并返回下一个TD内容。

这对您的源HTML做了一些假设。不过,如果你知道你的数据,那就足够了。

票数 2
EN

Stack Overflow用户

发布于 2008-11-03 07:32:48

大致是这样的:

(没有经过测试,只是快速代码给出了一个想法)

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
    };
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/258056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档