У меня есть ID в html. Этот идентификатор присваивается переменной Django, которая содержит идентификатор рекламы. Я хочу добавить этот идентификатор рекламы в список избранных, используя локальное хранилище (файлы cookie). Теперь этот идентификатор находится внутри цикла, и для каждой рекламы будет использоваться другой идентификатор. Вопрос в том, как выбрать конкретный идентификатор, когда пользователь нажимает на этот конкретный значок идентификатора.
Вот мой код:
{% for item in result %}
<span id = "favouriteBtn" style = "color:#ccc" title = "add this post to favorite list"> ☆ </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');
}
}
не уверен, но вы можете попробовать id = "{{item.id}}". Его можно выбрать с помощью jquery по $ ('# item.id')
Я имел в виду этот id = "{{item.id}}"
Он не может выбрать его с помощью «$ ('# item.id')», поскольку у него есть произвольное количество таких элементов, если только он динамически не сгенерирует свой код jQuery с помощью Django ofc.
Нгок Фам, я пробовал ваше решение, но оно не сработало. даже при наведении указателя мыши на значок не позволяет мне выбрать или щелкнуть по нему



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете отредактировать свой диапазон, чтобы иметь атрибут с именем 'data-item-id', который равен идентификатору вашего элемента, например:
{% for item in result %}
<span id = "favouriteBtn" onclick = "currentAddFav({{ item.id }})" style = "color:#ccc" title = "add this post to favorite list"> ☆ </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. Функция по-прежнему не работает. когда я проверял консоль, при нажатии на значок избранного не отображается сообщение? любая помощь или предложение?
Вам нужно принять значение в качестве аргумента в вашей функции «currentAddFav». Это эффективный способ сделать это.
извини, я тебя не понял?
Можете ли вы добавить свое предложение к функции currentAddFav?
Я отредактировал свой ответ и включил функцию «currentAddFav».
Нахиян, я использовал ваш отредактированный код и получил эту ошибку «TypeError: e.getAttribute не является функцией».
Для простоты я удалил отдельный код jQuery, приношу свои извинения. Внедрил его в элементы span, сгенерированные циклом. Попробуй снова.
вы можете попробовать вот так:
{% for item in result %}
<span id = "{{ item.id }}" style = "color:#ccc" title = "add this post to favorite list"> ☆ </span>
<script type = "text/javascript">
var id_selected = "{{ item.id }}";
</script>
{% endfor %}
и когда загрузка вашей страницы завершится, вы можете добавить функцию щелчка в этом var id_selected
$('#' + id_selected).click(function () {
currentAddFav();
});
Что вы имеете в виду, говоря «У меня есть идентификатор в HTML»?