Как выбрать html id, который назначается переменной Django в java скрипте

У меня есть ID в html. Этот идентификатор присваивается переменной Django, которая содержит идентификатор рекламы. Я хочу добавить этот идентификатор рекламы в список избранных, используя локальное хранилище (файлы cookie). Теперь этот идентификатор находится внутри цикла, и для каждой рекламы будет использоваться другой идентификатор. Вопрос в том, как выбрать конкретный идентификатор, когда пользователь нажимает на этот конкретный значок идентификатора.

Вот мой код:

{% for item in result %}
    <span id = "favouriteBtn" style = "color:#ccc" title = "add this post to favorite list"> &#9734; </span>
{% endfor %}

ID ДОЛЖЕН БЫТЬ ТАКИМ ОБРАЗОМ:

id = {{item.id}}

Вот часть функции javascript:

$('#favouriteBtn').click(function(){
currentAddFav();

Я хочу установить идентификатор как:

id = {{item.id}}

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

функция currentAddFav выглядит следующим образом:

function currentAddFav(){
if (localStorage.getItem('favourites')){//If there are favourites
    var storage = JSON.parse(localStorage['favourites']);
    if (storage.indexOf('data-item-id') == -1) { 
      // # not found
      storage.push('data-item-id');
      localStorage.setItem('favourites', JSON.stringify(storage));
    } else {
      // # found
      console.info('item already in favorites')
    }

}           
else
{//No favourites in local storage, so add new
    var favArray= [];
    favArray.push('data-item-id');
    localStorage.setItem("favourites", JSON.stringify(favArray));
    console.info('New favourites list');
}

}

Что вы имеете в виду, говоря «У меня есть идентификатор в HTML»?

Nahiyan 28.12.2018 08:48

не уверен, но вы можете попробовать id = "{{item.id}}". Его можно выбрать с помощью jquery по $ ('# item.id')

Ngoc Pham 28.12.2018 08:50

Я имел в виду этот id = "{{item.id}}"

Saleh 28.12.2018 08:51

Он не может выбрать его с помощью «$ ('# item.id')», поскольку у него есть произвольное количество таких элементов, если только он динамически не сгенерирует свой код jQuery с помощью Django ofc.

Nahiyan 28.12.2018 08:54

Нгок Фам, я пробовал ваше решение, но оно не сработало. даже при наведении указателя мыши на значок не позволяет мне выбрать или щелкнуть по нему

Saleh 28.12.2018 08:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
100
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы можете отредактировать свой диапазон, чтобы иметь атрибут с именем 'data-item-id', который равен идентификатору вашего элемента, например:

{% for item in result %}
    <span id = "favouriteBtn" onclick = "currentAddFav({{ item.id }})" style = "color:#ccc" title = "add this post to favorite list"> &#9734; </span>
{% endfor %}

Функция currentAddFav может обрабатывать остальную часть процесса (например, добавление в Cookie или что-то еще отсюда.

Ваша функция currentAddFav может выглядеть так:

function currentAddFav(item_id){
    if (localStorage.getItem('favourites')) { // If there are favourites
        var storage = JSON.parse(localStorage['favourites']);
        if (storage.indexOf(item_id) == -1) { 
          // not found
          storage.push(item_id);
          localStorage.setItem('favourites', JSON.stringify(storage));
        } else {
          // found
          console.info('item already in favorites')
        }

    } else { // No favourites in local storage, so add new
        var favArray= [];
        favArray.push(item_id);
        localStorage.setItem("favourites", JSON.stringify(favArray));
        console.info('New favourites list');
    }
}

Nahiyan, спасибо за ответ. Я отредактировал свой вопрос, чтобы включить функцию currentAddFav. Функция по-прежнему не работает. когда я проверял консоль, при нажатии на значок избранного не отображается сообщение? любая помощь или предложение?

Saleh 28.12.2018 09:08

Вам нужно принять значение в качестве аргумента в вашей функции «currentAddFav». Это эффективный способ сделать это.

Nahiyan 28.12.2018 09:19

извини, я тебя не понял?

Saleh 28.12.2018 09:24

Можете ли вы добавить свое предложение к функции currentAddFav?

Saleh 28.12.2018 10:18

Я отредактировал свой ответ и включил функцию «currentAddFav».

Nahiyan 28.12.2018 13:01

Нахиян, я использовал ваш отредактированный код и получил эту ошибку «TypeError: e.getAttribute не является функцией».

Saleh 28.12.2018 13:23

Для простоты я удалил отдельный код jQuery, приношу свои извинения. Внедрил его в элементы span, сгенерированные циклом. Попробуй снова.

Nahiyan 28.12.2018 13:29

вы можете попробовать вот так:

{% for item in result %}
    <span id = "{{ item.id }}" style = "color:#ccc" title = "add this post to favorite list"> &#9734; </span>
    <script type = "text/javascript">
        var id_selected = "{{ item.id }}";
    </script>
{% endfor %}

и когда загрузка вашей страницы завершится, вы можете добавить функцию щелчка в этом var id_selected

$('#' + id_selected).click(function () {
        currentAddFav();
});

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