首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双getElementsByTagName

双getElementsByTagName
EN

Stack Overflow用户
提问于 2012-10-10 12:57:26
回答 2查看 904关注 0票数 0

我遇到了这个问题,我无法缩小getElementsByTagName的范围。

这就是我要做的

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script>
function getElements()
{
    var t = document.getElementById("t");
    var x = t.getElementsByTagName("table");
    //var f = x.getElementsByTagName("td");
    alert(x.length);
}
</script>
</head>
<body>
<div id="t">
    <table class="x">
        <td class="f">
        </td>
    </table>
</div>
<input type="button" onclick="getElements()" value="How many input elements?">
</body>
</html>

以上作品,带回了1。

不过当我改变这个的时候。

代码语言:javascript
复制
var f = x.getElementsByTagName("td");
alert(f.length);

它破坏了剧本。

当我不能使用2 TagNames时,我如何能够缩小它的范围?

更新:我的错,在发布这篇文章之后,我意识到它必须在var.之后拥有。

代码语言:javascript
复制
var t = document.getElementById("t");
var x = t.getElementsByTagName("table");
var f = x[0].getElementsByTagName("td");
var u = f[0].getElementsByTagName("div");
alert(f.length);
alert(u[0].className);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-10 13:01:29

这是因为getElementsByTagName总是返回一个数组,即使只有一个元素。

如果你做了var f = x[0].getElementsByTagName("td");,它应该能正常工作。

票数 3
EN

Stack Overflow用户

发布于 2012-10-10 13:00:31

节点列表对象上没有getElementsByTagName函数。也就是说,第一次对getElementById()的调用返回一个DOM元素,因此从该结果调用getElementsByTagName()是可行的。但是,第二个调用返回一个节点列表(一个HTMLCollection),它没有这样的方法。

如果要在所有表中积累所有<td>元素的列表,则必须显式地对其进行编码。迭代第一个调用的结果( <table>元素列表),并累积每个列表中每个元素调用getElementsByTagName("td")的结果。(节点列表的元素是DOM元素,这样就可以了)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12819912

复制
相关文章

相似问题

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