这又是什么回报

时间:2015-12-04 14:27:05

标签: javascript

var targetDiv = document.getElementById("past").getElementsByClassName("ball ball-8")[0];
if (targetDiv.length>0) {
        alert("Black roll");
}
else alert("something else");

这是HTML代码:

<div id="past">
<div data-rollid="69106" class="ball ball-8">13</div>
<div data-rollid="69107" class="ball ball-1">7</div>
<div data-rollid="69108" class="ball ball-1">5</div>
<div data-rollid="69109" class="ball ball-8">13</div>
<div data-rollid="69115" class="ball ball-8">8</div></div>

问题是它永远不会运行If中的代码。 据我所知

var targetDiv = document.getElementById("past").getElementsByClassName("ball ball-8")[0];

应该返回一个数组吗?

2 个答案:

答案 0 :(得分:1)

让我们分解你在这里做的事情。你真的在一个步骤中做了三个步骤。

document.getElementById("past").getElementsByClassName("ball ball-8")[0];

首先,您将获得ID为past的元素。这显然会返回一个元素。

接下来,在该元素中,您将获得具有类名ballball-8的所有元素。那将返回一个元素列表。

最后,您使用数组语法来获取该数组的第0个元素。这意味着最终,您将返回一个元素:第一个元素是通过调用getElementsByClassName返回的。如果要返回完整的元素列表,则应从链的末尾删除[0]

答案 1 :(得分:0)

我想要做的就是让Div的最后一个孩子“过去”,我找到了办法。

var lastRoll = document.getElementById("past");
var lastChild = past.lastChild.innerHTML;

我之前解决问题的方法非常糟糕。