[英]Search for specific data attribute in divs and return the matches number
我有 4 個按鈕和 10 個 div。 每個 div 都有一個 data-id-cat 屬性,等於 1-3 中的一個數字。 我想要實現的只是計算有多少 div 有 data-id-cat='1',有多少 ='2' 等等,並將結果打印為按鈕內的文本。
例如,如果我有 4 個屬性為 data-id-cat='2' 的 div,我想打印 4 個。
我嘗試創建一個空數組,並為每個匹配項將匹配項推入數組,然后返回數組長度。 不知道我做錯了什么。
allCategories.forEach(cat => {
if(cat.getAttribute('data-id-cat') === '1') {
countArray.push(cat)
projectNumber[1].textContent = countArray.length
} else if(cat.getAttribute('data-id-cat') === '2') {
countArray.push(cat)
projectNumber[2].textContent = countArray.length
} else if(cat.getAttribute('data-id-cat') === '3') {
countArray.push(cat)
projectNumber[3].textContent = countArray.length
} else {
projectNumber[0].textContent = allCategories.length
}
})
瀏覽器會很樂意為您計算它們:
let sum = 0;
for (let n = 1; n <= 3; ++n) {
const count = document.querySelector(`div[data-id-cat="${n}"]`).length;
sum += count;
projectNumber[n].textContent = count;
}
projectNumber[0].textContent = sum;
使用Array.prototype.reduce()減少到 object ,其中鍵是 id-cat 值,值是遞增計數。
const countCat = () => { return [...document.querySelectorAll("[data-id-cat]")].reduce((ob, el) => { const c = el.dataset.idCat; ob[c] |= 0; ob[c] += 1; return ob; }, {}); } console.log(countCat())
<div data-id-cat="3"></div> <div data-id-cat="1"></div> <div data-id-cat="2"></div> <div data-id-cat="3"></div> <div data-id-cat="1"></div> <div data-id-cat="1"></div> <div data-id-cat="1"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.