如何反转0-100 range bar控制逻辑 实现0最慢读取100最快
解决方案
你当前的控制逻辑是直接将range滑块的取值作为setInterval的间隔毫秒数,间隔数值越小,内容刷新频次越高,读取速度越快,因此才会出现0对应最快、100对应最慢的效果。要反转逻辑只需调整间隔时间的映射规则即可,修改点如下:
修改步骤
- 找到JS代码中
resumeReading函数里的setInterval调用行,将原来直接传入滑块值的逻辑,替换为用100 - 滑块取值作为间隔时间:
原代码:
interval = setInterval(displayFileContents, document.getElementById("range").value);
修改后代码:
interval = setInterval(displayFileContents, 100 - Number(document.getElementById("range").value));
添加Number()转换是为了避免获取到的滑块值为字符串类型,导致计算错误。
- (可选优化)如果觉得0毫秒间隔速度过快不符合使用习惯,可自定义速度区间,比如设置最慢间隔为500ms、最快间隔为10ms,将上述行替换为以下代码即可,速度变化会更平缓:
const rangeVal = Number(document.getElementById("range").value); const intervalTime = 500 - (rangeVal * 4.9); interval = setInterval(displayFileContents, intervalTime);
修改完成后即可实现滑块值0对应最慢读取速度、100对应最快读取速度的效果,其余逻辑无需改动。
内容的提问来源于stack exchange,提问作者addapp
相关产品推荐
相关产品推荐

