由于我一直在看YouTube上的教程并阅读《 Head First Javascript》,一直在教自己如何用JavaScript编码,所以我决定通过构建对我来说非常有效的东西-Pomodoro技术来应对自己的挑战!自从我开始学习JavaScript以来,就一直在使用这种技术。当我想到JavaScript编码挑战时,涉及数组,函数,DOM等。我想为什么在5分钟的休息时间里不可以进行一系列活动的Pomodoro技术,即25和5的函数分钟计时器,然后使用HTML和CSS设置其样式。无论如何,这是到目前为止的代码...
<script>
function startTimer() {
var timer = document.getElementById("myTimer").innerHTML;
var arr = timer.split(":");
var hour = arr[0];
var min = arr[1];
var sec = arr[2];
if (sec == 0) {
if (min == 0) {
if (hour == 0) {
alert(pushup());
window.location.reload();
return;
}
hour--;
min = 60;
if (hour < 10) hour = "0" + hour;
}
min--;
if (min < 10) min = "0" + min;
sec = 59;
}
else sec--;
if (sec < 10) sec = "0" + sec;
document.getElementById("myTimer").innerHTML = hour + ":" + min + ":" + sec;
setTimeout(startTimer, 1000);
function pushup() {
var minBreak = ["Do 5 push ups!", "Do 10 push ups!", "Do 15 push ups!",
"Do 5 sit ups!", "Do 10 sit ups!", "Do 15 sit ups!",
"Clean room!", "Do laundry!", "Walk dog!" ];
var rand1 = Math.floor(Math.random() * minBreak.length);
var phrase = minBreak[rand1];
alert(phrase)
};
};
</script>
</head>
<body onload="startTimer();">
<p id="myTimer">00:00:10</p>
</body>
我首先逐步创建了俯卧撑功能,这很容易做到,在每个步骤上都设置了警报,所以我也知道自己也走了正确的路。但是,startTime函数是YouTube视频上的副本。尽我所能想出的办法,我一直在努力在浏览器中设置计时器!我唯一可以成功的方法是使用setInterval方法。但是,该视频只有一分钟长,并且无法解释其工作原理。我确保逐行了解它的工作原理,.split方法,为什么要使用多个if语句等。写下注释并确保我理解。现在,当计时器在10秒钟后关闭时,它会随机提醒minBreak琐事之一,成功!但是,然后显示另一个警报,提示“页面未定义”,这是为什么?并且(因为我是创建此语言的新手)您将如何编写此代码?我正在考虑具有不同杂务的多个变量。因此,var pushup将具有1个push up,2个push up等的数组。 var situp将具有1个situp,2个situp等的数组。我应该使用哪种语句或方法,以便math.random可以随机选择许多不同的变量数组之一,而不是全部合并。并不是真的要您向我展示如何完成代码,而是要使用for语句,while,ifs,ifs等方法。对不起,如果这没有道理。。但是,只是试图弥补自己的问题,挑战自我,质疑自己。但同时也需要一位导师/老师给我指路。
答案 0 :(得分:1)
您收到undefined
消息,因为您有两次alert
。第二个使用函数返回值来显示,但是该函数不返回任何内容,因此undefined
:
alert(pushup());
因此,功能pushup
会自己执行alert
,就像您想要的那样。但是随后函数返回到上面的语句,其中的结果显示在alert
中。是undefined
。
因此您可以通过调用函数来解决此问题:
pushup();
据我了解,这是唯一要解决的问题。