Запись в глобальную переменную с помощью селектора данных

Я хочу записать в глобальную переменную с помощью селектора данных. Это вообще возможно? (Пожалуйста, будьте осторожны, мой опыт довольно поверхностный :)

var one = 0;
var two = 0;
var three = 0;

$("a[data-typ]").click(function() {

  if ($(this).hasClass('active')) {

    $(this).removeClass('active');
    $(this).data("typ").toString--;

  } else {

    $(this).addClass('active');
    $(this).data("typ").toString++;

  }
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-typ='one'>One</a>
<a data-typ='two'>Two</a>
<a data-typ='three'>Three</a>
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы имели в виду это?

var one = 0;
var two = 0;
var three = 0;

$("a[data-typ]").click(function() {
  const typ = $(this).data("typ")
  if ($(this).is('.active')) {
    window[typ]--
  } else {
    window[typ]++
  }
  console.info(one,two,three)
  $(this).toggleClass("active");
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-typ='one'>One</a>
<a data-typ='two'>Two</a>
<a data-typ='three'>Three</a>

Если у вас есть более одного типа данных в одном атрибуте, вам необходимо разделить:

var one = 0;
var two = 0;
var three = 0;

$("a[data-typ]").click(function() {
  const types = $(this).data("typ").split(" "); // split on space.
  const active = $(this).is('.active');
  types.forEach(typ => { 
    if (active) {
      window[typ]--
    } else {
      window[typ]++
    }
  })
  console.info(one, two, three)
  $(this).toggleClass("active");
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-typ='one three'>One and three</a>
<a data-typ='two'>Two</a>

ух ты. Спасибо! Можно ли добавить две переменные в один клик. Типа <a data-typ='one three'>Один плюс три</a>?

mhouse 19.12.2020 21:47

В принципе да. Затем вам нужно разделить тип и цикл

mplungjan 19.12.2020 22:44

Хорошо. У меня есть только небольшое представление о том, что вы имеете в виду (на самом деле нет > новичок ;) Если это не проблема для вас, не могли бы вы показать это?

mhouse 20.12.2020 01:10

Итак, начните с описания варианта использования. Какова цель этого?

mplungjan 20.12.2020 07:10

Я обновил свой ответ, чтобы обработать более одного типа в атрибуте

mplungjan 20.12.2020 09:16

Вау и еще раз спасибо. Я пытаюсь собрать ответы из теста. В итоге у меня будет 8 категорий, чтобы получить баллы. Иногда они получают баллы более чем в одной категории за один вопрос. В конце я хочу показать пользователю, в какой категории он наиболее талантлив и т. д. :) Вы бы решили это по-другому?

mhouse 20.12.2020 17:55

Да. У меня был бы объект и, вероятно, я использовал бы более одного атрибута данных, но вам нужно задать новый вопрос, добавить больше html и больше объяснить, какова цель.

mplungjan 20.12.2020 19:09

Хорошо. Приятно осознавать, что это правильный путь. Я обновлю это, как только буду дальше по линии. еще раз спасибо за поддержку.

mhouse 20.12.2020 23:19

Можно ли заменить тип данных простым классом, заполненным текстом? Что-то вроде: const types = $(this).find("typ").text().split(" "); // разбить на пробел.

mhouse 12.01.2021 00:24

Конечно. Почему бы вам не попробовать? Дайте пример html

mplungjan 12.01.2021 05:54

Другие вопросы по теме