超出最大调用堆栈大小,尝试在我的 div 中计算值

问题描述 投票:0回答:2

我正在尝试将 div 中的 innerText 从 0 更改为 div 中的值。

你能告诉我 - 为什么调用堆栈大小超出,我试图创建条件来离开我的递归 - 但它不起作用。

const itemsToCount = document.querySelectorAll('.customers'); 

function counter (item) {
    let stopPoint = Number(item.innerText.slice(0,-1));
    let counterNum = 0; 
    function increase () {  
        if (counterNum === stopPoint) {
            item.innerText = `${item}+`
            return; 
        } else {
            setTimeout(() => {
                item.innerText = counterNum; 
            }, 100)
            counterNum += 1;
            return increase(); 
        }
    }

    increase()
}

Array.from(itemsToCount).forEach(item => {
    counter(item)
})

我的 HTML 看起来像

<div class="wrapper">
    <p class="experience__counter customers">250+</p>
    <p class="experience__counter customers">20+</p>
    <p class="experience__counter customers">150+</p>
</div>
javascript html settimeout
2个回答
0
投票

嘿,根据我的说法,querySelectorAll 返回一个集合,因此您不能像这样更改其内部文本。你必须使用这个——itemsToCount[0] 这里 0 是索引尝试使用这个


0
投票

“尝试将 counterNum += 1;increase(); 放入 setTimeout 回调中” 太棒了 2天前

谢谢你,https://stackoverflow.com/users/10549313/bravo

© www.soinside.com 2019 - 2024. All rights reserved.