2016-03-04 4 views
0

Предположим, у меня неупорядоченный список вкладок следующим образом:Получить максимальное значение состояния для элементов Li

<ul> 
    <li>...</li> 
    <li>...</li> 
    <li>...</li> 
</ul> 

Теперь я готовлю список как активный основе по щелчку. Таким образом, когда пользователь нажимает на li, он будет отмечен как активный, а this.state.selected будет равен номеру li. Например, при нажатии на первый li, this.state.selected будет равен 1 и так далее.

Возможно ли найти способ maximum state, который может быть выбран?

Например, если ul имеет три li метки, то maximum state для selected будет 3.

+0

максимальное состояние было бы число соответствующих элементов. Можете ли вы показать свой начальный код, чтобы мы могли воспроизвести проблему? –

ответ

1

Предполагая, что this является ссылкой на <ul>, я предлагаю:

this.state.maximum = this.children.length; 

Или, в случае там могут быть дети Чтобы не считаться, вы можете передать селектор CSS до querySelectorAll(), чтобы получить только тех детей, которых вы хотите найти:

this.state.maximum = this.querySelectorAll('li.classToFind').length; 

Или, вы можете использовать Array.prototype.filter() сохранить только те элементы, которые вы хотите посчитать, на основе свойства узлов элементов, например, сохраняя только те узлы элементов со свойством «держать» равно «истинно» (как простая демонстрация):

// Array.from() turns the NodeList returned by this.children 
// into an array, in order to easily use the methods of the 
// Array prototype, 
// Array.prototype.filter() is used to filter out those elements 
// for which the assessment in the anonymous function returns a 
// false, or falsey, value: 
this.state.maximum = Array.from(this.children).filter(
    function(node){ 
    return node.keep === true; 
    }).length; 

Или, переписывания выше, чтобы использовать функции стрелок:

this.state.maximum = Array.from(this.children) 
          .filter(n => n.keep === true).length; 
1

Есть ли способ узнать максимально возможное состояние для ?

Пример, если уль имеет три Li-теги, то максимальное состояние для будет выбрана 3.

Итак, вы хотите узнать количество детей ul?

<ul id="ul1"> 
    <li>...</li> 
    <li>...</li> 
    <li>...</li> 
</ul> 

Это гораздо код должен делать

alert(document.getElementById('ul1').children.length); 
+0

Я не хочу найти число детей. Я хочу узнать максимально возможное состояние для li. Будет ли это правильным способом установить состояние document.getElementById ('ul1') .children.length? –

+0

@NirmalyaGhosh вы сказали: «Если у ul есть три тега li, тогда максимальное состояние для выбранного будет 3', в этом случае мое решение должно работать. потому что он даст количество тегов номер li внутри ul – gurvinder372

+0

Я получаю это. Я спрашиваю, будет ли это правильным способом или есть лучший способ сделать это :) –

Смежные вопросы