javascript - 通过两个函数改变值
问题描述
我有改变值变量的函数totalTime
。
当我使用第一个函数值等于189 - 50
(139)。
使用第二个函数后,我想收到current value - 8
(131) 但我有189 - 8
.
我究竟做错了什么?
let totalTime = 189; // *
function calcTime(){
let hours = Math.trunc(totalTime/60);
let minutes = totalTime % 60;
let formatted = hours + 'h ' + minutes + 'm';
fullTimeDefault.innerHTML = formatted;
}
function workTimeDecrease() {
if(valueElem[0]) {
if (+valueElem[0].innerHTML === 15) {
return false
} else{
valueElem[0].innerHTML = parseInt(valueElem[0].innerHTML, 10) - step;
}
for(i = 0; i < barElem.length; i++) {
barElem[i].style.width = parseInt(valueElem[0].innerHTML, 10) + '%';
}
totalTime -= 50 // (1!)
}
}
function shortBreakDecrease() {
if(valueElem[2]) {
if (+valueElem[2].innerHTML === 3) {
return false
} else {
valueElem[2].innerHTML = parseInt(valueElem[2].innerHTML, 10) - step;
}
for(i = 0; i < barElem2.length; i++) {
barElem2[i].style.width = parseInt(valueElem[2].innerHTML, 10) + '%';
}
totalTime -= 8 // (2!)
}
}
elem.onclick = function(event) {
if (event.target.closest('.down-time')) {
workTimeDecrease();
calcTime();
} else if (event.target.closest('.up-time')) {
workTimeIncrease();
calcTime();
}
if (event.target.closest('.down-short-break')) {
shortBreakDecrease();
calcTime();
} else if (event.target.closest('.up-short-break')) {
shortBreakIncrease();
calcTime();
}
}
解决方案
我的想法是,这条线没有将 totalTime 分配给您的输出,尽管它正在内部进行修改(“步骤”也没有在任何地方定义)
valueElem[0].innerHTML = parseInt(valueElem[0].innerHTML, 10) - step;
也许如果你在步骤中传递 50 然后在 2 个调用中传递 8 个(更改标题以作为参数):
function workTimeDecrease(int step) {
function shortBreakDecrease(int step) { ...
改变:
valueElem[0].innerHTML = parseInt(valueElem[0].innerHTML, 10) - step;
...
valueElem[2].innerHTML = parseInt(valueElem[0].innerHTML, 10) - step;
至:
valueElem[0].innerHTML = totalTime - step;
...
valueElem[2].innerHTML = totalTime - step;
并将两个 totalTime 分配更改为:
totalTime -= step;
您还可以在分配 totalTime 后立即向控制台发出警报或日志,以确保这不是问题(或全部结束,有助于检查值 - 我广泛使用这些值进行调试,有时是每一行)。
推荐阅读
- python - Postgis ST_GeomFromWKB 返回遇到无效的字节序标志值
- postgresql - postgresql – Debian 伸展上没有 crypt 功能
- sql - 为什么布尔字段在 Hive 中不起作用?
- visual-studio-code - 如何检查内置格式化程序/美化器版本?它会自动更新吗?
- python - (Python) How to fix numerical representation error in dataframe column values
- python - cython 是否支持数据类或类似的东西
- c++ - 实现与浮点数一起使用的自定义 atomic_add()
- java - 如何在 Android 中将 RecyclerView 添加到导航?
- java - 无法使用 JSTL 在 JSP 中打印 Java List 对象
- angular - 角材料侧导航样式无法正常工作