Считать элементы по id

Мне нужно иметь возможность устанавливать var с количеством открытых заказов на используемом вами веб-сайте.

Предупреждение: этот сайт по какой-то причине использует те же идентификаторы снова и снова за заказ, но поскольку это не мой сайт, я не могу это изменить.

код моего текущего списка заказов:

<div id="orderlist">
<label id="l61">05/19/2014 08:57:34</label>
<label id="l62">0.00066000</label>
<label id="l63">Buy</label>
<label id="l64">6</label>
<label id="l64">6</label>
<label id="l62">0.00396000</label>
<label id="l65" onclick="cancelOrder(346046);">Cancel</label>

<label id="l61">05/19/2014 03:08:35</label>
<label id="l62">0.00078000</label>
<label id="l63">Sell</label>
<label id="l64">2</label>
<label id="l64">1</label>
<label id="l62">0.00078000</label>
<label id="l65" onclick="cancelOrder(38493);">Cancel</label>

<label id="l61">05/19/2014 03:12:08</label>
<label id="l62">0.00076000</label>
<label id="l63">Sell</label>
<label id="l64">14</label>
<label id="l64">14</label>
<label id="l62">0.01064000</label>
<label id="l65" onclick="cancelOrder(38495);">Cancel</label>

<label id="l61">05/19/2014 03:13:49</label>
<label id="l62">0.00077000</label>
<label id="l63">Sell</label>
<label id="l64">15</label>
<label id="l64">15</label>
<label id="l62">0.01155000</label>
<label id="l65" onclick="cancelOrder(38497);">Cancel</label>
 </div>

Что мне нужно сделать в основном, подсчитывается количество идентификаторов "l65". Или другой идентификатор, это не имеет значения, все они используются каждый раз, когда добавляется новый заказ.

Каким будет самый простой способ сделать это? Мне нужно это число в var, чтобы я мог выполнять функции, основанные на этом числе.

3 ответа

Простейший трюк:

$("label[id^=l65]").length // will directly give you the count

Традиционный:

$("label").each(function() {
 var totalId = countId(this.id);
 console.log(this.id + " : "+totalId); // this will alert l65 : count of 165
 });

Многоразовая функция: идентификатор pass, который равен 165

function countId(id) {
 var counter = 0;
 $("label").each(function() {
 if(this.id==id) {
 counter+=1;
 } 
 });
}


Так вы можете это сделать. Он не будет соответствовать идентификатору exect, но id начинается с l61

$('[id^=l61]').length


Попробуй это:

HTML:

<div id="orderlist">
<label id="l61">05/19/2014 08:57:34</label>
<label id="l62">0.00066000</label>
<label id="l63">Buy</label>
<label id="l64">6</label>
<label id="l64">6</label>
<label id="l62">0.00396000</label>
<label id="l65" onclick="cancelOrder(346046);">Cancel</label>

<label id="l61">05/19/2014 03:08:35</label>
<label id="l62">0.00078000</label>
<label id="l63">Sell</label>
<label id="l64">2</label>
<label id="l64">1</label>
<label id="l62">0.00078000</label>
<label id="l65" onclick="cancelOrder(38493);">Cancel</label>

<label id="l61">05/19/2014 03:12:08</label>
<label id="l62">0.00076000</label>
<label id="l63">Sell</label>
<label id="l64">14</label>
<label id="l64">14</label>
<label id="l62">0.01064000</label>
<label id="l65" onclick="cancelOrder(38495);">Cancel</label>

<label id="l61">05/19/2014 03:13:49</label>
<label id="l62">0.00077000</label>
<label id="l63">Sell</label>
<label id="l64">15</label>
<label id="l64">15</label>
<label id="l62">0.01155000</label>
<label id="l65" onclick="cancelOrder(38497);">Cancel</label>
 </div>

ЯШ:

$(function(){
 var i=0;
 $("label").each(function(){
 if($(this).attr("id") == "l65")
 i++;
 });
 console.log(i);
});

играть на скрипке

В этом примере подсчитываются все метки, id которых равен lbl65.

licensed under cc by-sa 3.0 with attribution.