Maison > Questions et réponses > le corps du texte
Désolé de vous déranger, mais j'ai passé deux heures à essayer de comprendre cela. Le problème est que mon code n'ajoute qu'un seul élément, mais aucun autre identifiant, il dit "existe déjà"
$(function(){ $(".js-compare-add").click(function(){ var item_id = $(this).data('id'); if(Cookies.get('compare_id_list')){ var compareListStr = Cookies.get('compare_id_list'); var compareListArr = compareListStr ? compareListStr.split(',') : []; if (compareListArr.indexOf(item_id) > -1) { compareListArr.push(item_id); Cookies.set('compare_id_list', compareListArr.join(','), {expires: 10}); alert('Save! ' + item_id); } else { alert('already have ' + item_id); } } else { alert('There was no list, we created it and added this position ' + item_id); Cookies.set('compare_id_list', item_id); } }); });
Juste au cas où - je l'utilise pour les cookies https://github.com/js-cookie/js-cookie if (jQuery.inArray(item_id,compareListArr) === -1) n'aide pas non plus
P粉3641297442024-04-04 11:01:12
Dave Newton a fait valoir un point utile , la logique semble inversée, mais si c'est ce que vous obtenez si vous essayez de le faire fonctionner :
Lorsque vous utilisez la valeur de chaîne data
函数时,jQuery 会进行数据操作,它不仅仅为您提供匹配的 data-id
de l'attribut. Si le texte de l'attribut est entièrement numérique, jQuery le convertira en nombre :
const id = $("#example").data("id"); console.log(typeof id); // number
<div id="example" data-id="123"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>