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>