Der Prozess zur Bestimmung, ob ein Element in einem Array vorhanden ist, ist ungültig
P粉204136428
P粉204136428 2024-04-03 13:03:54
0
1
540

Tut mir leid, dass ich Sie störe, aber ich habe zwei Stunden damit verbracht, das herauszufinden. Das Problem ist, dass mein Code nur ein Element hinzufügt, aber keine andere ID, es heißt „bereits vorhanden“

$(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);
        }

    });
});

Nur für den Fall – ich verwende dies für Cookies https://github.com/js-cookie/js-cookie if (jQuery.inArray(item_id,compareListArr) === -1) hilft auch nicht

P粉204136428
P粉204136428

Antworte allen(1)
P粉364129744

戴夫·牛顿提出了一个有用的观点,逻辑似乎落后,但如果这是你尝试让它工作的结果:

当您使用 data 函数时,jQuery 会进行数据操作,它不仅仅为您提供匹配的 data-id 属性的字符串值。如果属性的文本都是数字,jQuery 会将其转换为数字:

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>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage