Как я могу применить javascript к списку элементов?

Я хочу перевернуть карты в браузере. Элементы отображаются с помощью шаблона Django для цикла. Я могу перевернуть первую карту, но не остальные. Я хочу, чтобы они переворачивались индивидуально.

Вот HTML:

   {% for element in elements %}
    <div class = "outer">
        <div class = "inner">

          <div class = "card-back">
            <span>{{ content }}</span>
          </div>

          <div class = "card-front">
            <span>{{ content }}</span>
          </div>

        </div>
      </div>
    {% endear %}

Вот javascript:

# works for the first element
var card = document.querySelector('.inner');
card.addEventListener( 'click', function() {
  card.classList.toggle('is-flipped');
});

# this function seems to break things
function() {
  var cards = document.querySelectorAll(".inner");
  for ( var i  = 0, len = cards.length; i < len; i++ ) {
    var card = cards[i];
    clickListener(card);
  }
});

🤔 А знаете ли вы, что...
С помощью JavaScript можно создавать клиентские приложения для мобильных устройств с использованием фреймворков, таких как React Native и NativeScript.


1
187
1

Ответ:

Решено

Согласно Документация Mozilla, document.querySelector() возвращает объект Element, представляющий первый элемент, который соответствует указанному набору селекторов CSS, или null, если совпадений нет.

Поэтому он работает только для первого элемента.

Если вы хотите применить это ко всем элементам, вы можете использовать jQuery и зарегистрировать событие, когда страница полностью загружена.

<head>

    <script src = "https://code.jquery.com/jquery-3.3.1.js">

    <script>

        $(document).ready(function()
        {
            $(".inner").on('click', function(event)
            {
                var card = event.target;
                card.classList.toggle('is-flipped');
            });
        });

    </script>

</head>

ВАЖНЫЙ: вам не нужна функция с циклом for, так как jQuery автоматически применяет событие щелчка всякий раз, когда добавляется новый элемент.