第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

選中多個(gè)復(fù)選框時(shí)篩選數(shù)據(jù)

選中多個(gè)復(fù)選框時(shí)篩選數(shù)據(jù)

寶慕林4294392 2022-09-23 16:32:30
目前,在我的應(yīng)用程序中,用戶可以通過鍵入游戲名稱來搜索游戲標(biāo)題。當(dāng)他們開始鍵入結(jié)果時(shí),將使用篩選器方法進(jìn)行更新。我現(xiàn)在嘗試使用多個(gè)復(fù)選框執(zhí)行相同的操作。因此,當(dāng)用戶檢查游戲機(jī)和/或Xbox時(shí),例如結(jié)果僅顯示這些類別中的游戲。當(dāng)他們?nèi)∠x中時(shí),結(jié)果將使用更新的值刷新。目前,我已成功為所有復(fù)選框創(chuàng)建了更改事件,并將其值推送到 filters.categories 數(shù)組。我遇到的問題是我不知道如何將此數(shù)組連接到我現(xiàn)有的過濾器方法。我需要以某種方式循環(huán)遍歷數(shù)組,并將當(dāng)前值與我的存儲(chǔ)對(duì)象中的 category.name 進(jìn)行比較,以查看它們是否匹配。這在過濾方法內(nèi)部可以做到嗎?有什么想法我錯(cuò)了嗎?提前致謝。網(wǎng)頁(yè):<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head><body>    <aside>        <ul>            <li>                <label>                    <input type="checkbox" value="playstation" class="category-cb">                    <span>Playstation</span>                </label>                <li>                    <label>                        <input type="checkbox" value="xbox" class="category-cb">                        <span>Xbox</span>                    </label>                </li>                <li>                    <label>                        <input type="checkbox" value="nintendo" class="category-cb">                        <span>Nintendo</span>                    </label>                </li>            </li>        </ul>    </aside>    <main>        <input type="text" class="store-search" placeholder="Search">        <ul class="grid"></ul>    </main>    <script src="app.js"></script></body></html>這些:/*----------------------------    data----------------------------*/const stores = [{    id: 0,    name: 'The Last Of Us',    studio: 'Naughtydog',    thumbnail: '',    category: {        id: 0,        name: 'Playstation'    },    price: 50.00}, {    id: 1,    name: 'Animal Crossing',    studio: 'Nintendo',    thumbnail: '',    category: {        id: 1,        name: 'Nintendo'    },    price: 60.00}, {    id: 2,    name: 'Gears 5',    studio: 'The Coalition',    thumbnail: '',    category: {        id: 2,        name: 'Xbox'    },https://jsfiddle.net/bjgp0ux4/
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

要實(shí)現(xiàn)兩個(gè)主要功能:


取消選中類別時(shí)將其刪除


我建議您使用 Set as ,以便您可以分別通過 和 輕松檢查、添加和刪除條目。filters.categorieshasadddelete


//onchange event

if (checkbox.checked) {

    filters.categories.add(event.target.value);

} else {

    filters.categories.delete(event.target.value);

}

filterStores(stores, filters);

也根據(jù)類別進(jìn)行過濾stores


將回調(diào)修改為帳戶:.filter


store.name.toLowerCase().includes(filters.searchText.toLowerCase()) &&

filters.categories.has(store.category.name.toLowerCase())

此外,要在未選擇任何類別時(shí)顯示全部,請(qǐng)執(zhí)行以下操作:


store.name.toLowerCase().includes(filters.searchText.toLowerCase()) &&

(

    filters.categories.has(store.category.name.toLowerCase()) ||

    filters.categories.size === 0

)

一起:


/*----------------------------

    data

----------------------------*/


const stores = [{

    id: 0,

    name: 'The Last Of Us',

    studio: 'Naughtydog',

    thumbnail: '',

    category: {

        id: 0,

        name: 'Playstation'

    },

    price: 50.00

}, {

    id: 1,

    name: 'Animal Crossing',

    studio: 'Nintendo',

    thumbnail: '',

    category: {

        id: 1,

        name: 'Nintendo'

    },

    price: 60.00

}, {

    id: 2,

    name: 'Gears 5',

    studio: 'The Coalition',

    thumbnail: '',

    category: {

        id: 2,

        name: 'Xbox'

    },

    price: 10.00

}, {

    id: 3,

    name: 'DOOM Eternal',

    studio: 'id Software',

    thumbnail: '',

    category: {

        id: 3,

        name: 'Playstation'

    },

    price: 50.00

}, {

    id: 4,

    name: 'The Legend of Zelda: Link\'s Awakening',

    studio: 'Grezzo',

    thumbnail: '',

    category: {

        id: 4,

        name: 'Nintendo'

    },

    price: 35.00

}, {

    id: 5,

    name: 'Resident Evil 3',

    studio: 'Capcom',

    thumbnail: '',

    category: {

        id: 5,

        name: 'Playstation'

    },

    price: 40.00

}];


let filters = {

    searchText: '',

    categories: new Set

}


/*----------------------------

    functions

----------------------------*/


let filterStores = function (stores, filters) {


    let filteredStores = stores.filter(store => (

        store.name.toLowerCase().includes(filters.searchText.toLowerCase()) &&

        (

            filters.categories.has(store.category.name.toLowerCase()) ||

            filters.categories.size === 0 //No selected categories, show all

        )

    ));


    let grid = document.querySelector('.grid');

    grid.innerHTML = '';


    filteredStores.forEach(function (store) {

        let li = document.createElement('li');

        li.textContent = store.name;

        grid.appendChild(li);

    });

}


/*----------------------------

    events

----------------------------*/


document.addEventListener('DOMContentLoaded', function () {

    filterStores(stores, filters);


    document.querySelector('.store-search').addEventListener('input', function (event) {

        filters.searchText = event.target.value;

        filterStores(stores, filters);

    });


    document.querySelectorAll('.category-cb').forEach(function (checkbox) {

        checkbox.addEventListener('change', function (event) {

            if (checkbox.checked) {

                filters.categories.add(event.target.value);

            } else {

                filters.categories.delete(event.target.value);

            }

            filterStores(stores, filters);

        });

    });

});

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>


    <aside>

        <ul>

            <li>

                <label>

                    <input type="checkbox" value="playstation" class="category-cb">

                    <span>Playstation</span>

                </label>

            </li>

            <li>

                <label>

                    <input type="checkbox" value="xbox" class="category-cb">

                    <span>Xbox</span>

                </label>

            </li>

            <li>

                <label>

                    <input type="checkbox" value="nintendo" class="category-cb">

                    <span>Nintendo</span>

                </label>

            </li>

        </ul>

    </aside>

    <main>

        <input type="text" class="store-search" placeholder="Search">

        <ul class="grid"></ul>

    </main>


    <script src="app.js"></script>

</body>

</html>


您還可以使用數(shù)組:


/*----------------------------

    data

----------------------------*/


const stores = [{

    id: 0,

    name: 'The Last Of Us',

    studio: 'Naughtydog',

    thumbnail: '',

    category: {

        id: 0,

        name: 'Playstation'

    },

    price: 50.00

}, {

    id: 1,

    name: 'Animal Crossing',

    studio: 'Nintendo',

    thumbnail: '',

    category: {

        id: 1,

        name: 'Nintendo'

    },

    price: 60.00

}, {

    id: 2,

    name: 'Gears 5',

    studio: 'The Coalition',

    thumbnail: '',

    category: {

        id: 2,

        name: 'Xbox'

    },

    price: 10.00

}, {

    id: 3,

    name: 'DOOM Eternal',

    studio: 'id Software',

    thumbnail: '',

    category: {

        id: 3,

        name: 'Playstation'

    },

    price: 50.00

}, {

    id: 4,

    name: 'The Legend of Zelda: Link\'s Awakening',

    studio: 'Grezzo',

    thumbnail: '',

    category: {

        id: 4,

        name: 'Nintendo'

    },

    price: 35.00

}, {

    id: 5,

    name: 'Resident Evil 3',

    studio: 'Capcom',

    thumbnail: '',

    category: {

        id: 5,

        name: 'Playstation'

    },

    price: 40.00

}];


let filters = {

    searchText: '',

    categories: []

}


/*----------------------------

    functions

----------------------------*/


let filterStores = function (stores, filters) {


    let filteredStores = stores.filter(store => (

        store.name.toLowerCase().includes(filters.searchText.toLowerCase()) &&

        (

            filters.categories.includes(store.category.name.toLowerCase()) ||

            filters.categories.length === 0 //No selected categories, show all

        )

    ));


    let grid = document.querySelector('.grid');

    grid.innerHTML = '';


    filteredStores.forEach(function (store) {

        let li = document.createElement('li');

        li.textContent = store.name;

        grid.appendChild(li);

    });

}


/*----------------------------

    events

----------------------------*/


document.addEventListener('DOMContentLoaded', function () {

    filterStores(stores, filters);


    document.querySelector('.store-search').addEventListener('input', function (event) {

        filters.searchText = event.target.value;

        filterStores(stores, filters);

    });


    document.querySelectorAll('.category-cb').forEach(function (checkbox) {

        checkbox.addEventListener('change', function (event) {

            if (checkbox.checked) {

                filters.categories.push(event.target.value);

            } else {

                filters.categories.splice(filters.categories.indexOf(event.target.value), 1);

            }

            filterStores(stores, filters);

        });

    });

});

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>


    <aside>

        <ul>

            <li>

                <label>

                    <input type="checkbox" value="playstation" class="category-cb">

                    <span>Playstation</span>

                </label>

            </li>

            <li>

                <label>

                    <input type="checkbox" value="xbox" class="category-cb">

                    <span>Xbox</span>

                </label>

            </li>

            <li>

                <label>

                    <input type="checkbox" value="nintendo" class="category-cb">

                    <span>Nintendo</span>

                </label>

            </li>

        </ul>

    </aside>

    <main>

        <input type="text" class="store-search" placeholder="Search">

        <ul class="grid"></ul>

    </main>


    <script src="app.js"></script>

</body>

</html>


查看完整回答
反對(duì) 回復(fù) 2022-09-23
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)