JavaScript转CoffeeScript后计数器代码失效且无报错问题求助
计数器CoffeeScript代码修复
你的代码核心问题是缩进错误,CoffeeScript完全依赖缩进划分代码块作用域,原代码中counters.forEach (counter) ->之后的所有代码都没有缩进,导致这些逻辑不在forEach的回调函数内部——相当于只遍历了counters但没执行任何绑定操作,自然不会有效果,也不会触发报错。
另外递减按钮的逻辑里存在冗余代码,注释掉的count--和下方的countElement.textContent = count会导致即使count不大于0时也会强制更新文本,需要清理。
修复后的代码:
counters = document.querySelectorAll('.counter') counters.forEach (counter) -> incrementButton = counter.querySelector('.plus') decrementButton = counter.querySelector('.minus') countElement = counter.querySelector('.count') incrementButton.addEventListener 'click', -> count = parseInt(countElement.textContent, 10) count++ countElement.textContent = count return decrementButton.addEventListener 'click', -> count = parseInt(countElement.textContent, 10) if count > 0 count-- countElement.textContent = count return return
关键修复点:
- 将
incrementButton、decrementButton、countElement的定义,以及两个按钮的事件监听代码全部缩进,放到forEach的回调函数内部,确保每个counter元素都能绑定对应的事件。 - 清理递减逻辑中的冗余代码,避免不必要的文本更新。
内容的提问来源于stack exchange,提问作者Ahsan
相关产品推荐
相关产品推荐

