2015-12-04 35 views
-5
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> 

的问题是,它永远不会运行在如果代码。 据我所知

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

应该返回一个数组吧?

+2

'console.debug(targetDiv)'...!?你得到*一个元素*,因为你选择的是[0]而不是数组。 – deceze

+0

尝试'document.querySelector('#past .ball.ball-8')' – Tushar

+1

如果您在末尾省略索引选择器,它将返回一个数组。 – tymeJV

回答

1

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

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

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

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

最后,您使用数组语法来获取该数组的第0个元素。这意味着最终你将返回一个Element:第一个返回到getElementsByClassName。如果你想返回元素的完整列表,那么你应该从链的末尾删除[0]

+0

我想要做的是获得最后一卷,如果它是“球8”,“球1”或“球0” –

+1

那么这当然不是这个代码正在做什么。你甚至从来没有在这个代码中提到ball-0或ball-1。如果您需要进一步帮助了解如何做这样的事情,您需要发布一个不同的问题,明确说明您正在尝试做什么,并寻求具体的帮助。 –

0

我想要做的事情是获得ID为“过去”的分区的最后一个孩子,我找到了一个办法。

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

我之前对这个问题的处理方法非常糟糕。