Maison  >  Questions et réponses  >  le corps du texte

Le processus permettant de déterminer si un élément existe dans un tableau n'est pas valide

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粉204136428P粉204136428180 Il y a quelques jours393

répondre à tous(1)je répondrai

  • P粉364129744

    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>

    répondre
    0
  • Annulerrépondre