Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   получить value по кликнотому li (https://javascript.ru/forum/misc/84814-poluchit-value-po-kliknotomu-li.html)

StartGames 02.01.2023 12:38

получить value по кликнотому li
 
здравствуйте.
как можно получить value кликнув по определенному li?
почему то всегда получаю 0

<ul class="list-unstyled text-center">
    {% if dop1 %}<li id="pwc{{ dop2 }}" class="active" value="by_cat{{ dop2 }}"><div>{{ dop1 }}</div></li>{% endif %}
    {% if dop3 %}<li id="pwc{{ dop4 }}" value="by_cat{{ dop4 }}"><div>{{ dop3 }}</div></li>{% endif %}
    {% if dop5 %}<li id="pwc{{ dop6 }}" value="by_cat{{ dop6 }}"><div>{{ dop5 }}</div></li>{% endif %}
    {% if dop7 %}<li id="pwc{{ dop8 }}" value="by_cat{{ dop8 }}"><div>{{ dop7 }}</div></li>{% endif %}
    {% if dop9 %}<li id="pwc{{ dop10 }}" value="by_cat{{ dop10 }}"><div>{{ dop9 }}</div></li>{% endif %}
    {% if dop11 %}<li id="pwc{{ dop12 }}" value="by_cat{{ dop12 }}"><div>{{ dop11 }}</div></li>{% endif %}
    {% if dop13 %}<li id="pwc{{ dop14 }}" value="by_cat{{ dop14 }}"><div>{{ dop13 }}</div></li>{% endif %}
    {% if dop15 %}<li id="pwc{{ dop16 }}" value="by_cat{{ dop16 }}"><div>{{ dop15 }}</div></li>{% endif %}
  </ul>
  <script>
    let act_cat;
    $('#html39 li').click(function(){
      $('#html39 li').removeClass('active');
      $(this).addClass('active');
      act_cat = $(this).val();
      alert(act_cat)
    });
  </script>


дело в том что каждый из li хранит определенный id другого блока которому нужно добавить класс active при нажатии на li.

рони 02.01.2023 13:00

StartGames,
не надо пихать что попало куда оно не стояло!!!
нет value в li, есть только в полях формы input, select, textarea.
если очень хочется,
act_cat = $(this).attr('value');

но лучше по нормальному data-id="by_cat{{ dop4 }}" вместо value="by_cat{{ dop4 }}" и тогда
act_cat = $(this).data('id');

voraa 02.01.2023 13:04

Просто взять значение атрибута value у li, по которому кликнули
<body>
<ul  class="list-unstyled text-center">
<li value="x1"> li 1</li>
<li value="x2"> li 2</li>
<li value="x3"> li 3</li>
</ul>
<script>
document.querySelector('.list-unstyled')
	.addEventListener('click', (ev)=>{
		const li = ev.target.closest('li')
		alert(li.getAttribute('value'));
	})</script>
</body>

voraa 02.01.2023 13:05

Цитата:

Сообщение от рони
нет value в li, есть только в полях формы input, select, textarea.

Есть!
https://developer.mozilla.org/ru/doc...TML/Element/li

Он есть у <button>, <data>, <input>, <li>, <meter>, <option>, <progress>, <param>
https://developer.mozilla.org/en-US/...TML/Attributes

А вот у select и textareа нет такого атрибута. У элементов есть свойство value, но оно не связано с атрибутом.

рони 02.01.2023 13:10

voraa,
ок! но не для хранения чего попало, а только числа.

voraa 02.01.2023 13:20

Ну на самом деле хранить то можно, что угодно. Любую строку
И получить это через getAttribute.
Вот свойство value, действительно только число. И будет 0, если атрибут не переводится в число.

Хотя data-value было бы корректнее.

StartGames 02.01.2023 21:30

Спасибо парни, помогли)) только интересно какие последствия могут быть если если использовать именно value в li который содержит не только цифры.

рони 02.01.2023 21:46

Цитата:

Сообщение от StartGames
какие последствия

никаких, ножом тоже можно есть, но ложкой удобнее)))

StartGames 03.01.2023 02:36

Цитата:

Сообщение от рони (Сообщение 549604)
никаких, ножом тоже можно есть, но ложкой удобнее)))

ахах)) понял, использовал data-value надеюсь так будет лучше)


Часовой пояс GMT +3, время: 22:23.