一个计时器,用户可以在其中输入未来日期的变量

竖起大拇指

如果有人能为我正在进行的学校项目指明正确的方向,那就太好了。下面你会看到一个超级简单的计时器,我是在一个名为 Web Dev 的 youtube 用户的教程的帮助下制作的。该示例将新年前夜硬编码到脚本中。但我想更进一步,要求用户输入他们的特殊日期——例如,让计时器倒计时到他们的生日。

到目前为止,我已经设法使计数器从给定日期开始倒计时,而不仅仅是硬编码日期,而且我已经设法为用户生成的数据创建了输入表单。但是一旦我试图将两者结合起来,就出现了问题。我猜我需要将用户生成的数字输入到其中一个函数中,而不仅仅是将它们作为 let、var 和 const 列在上面?

哦,理想情况下,我应该想出一种方法,让用户点击“输入”按钮后,输入表单就会消失。

对于我之前的 StackOverflow 问题,有人非常友好地为我编写了完整的答案。但由于这在很大程度上是一个学习过程,我会非常满意一些正确方向的提示和指示。

        let userYear = userYearEntered;
        let userMonth = userMonthEntered;
        let userDay = userDayEntered;

        const userDate = new Date(userYear, userMonth, userDay, 0, 0, 0);
        const userOccasion = 'I need to present this project';


        function enterSpecialDate() {
            var userYearEntered = document.getElementById('userYear').value;
            console.log(userYearEntered);

            var userMonthEntered = document.getElementById('userMonth').value;
            console.log(userMonthEntered);

            var userDayEntered = document.getElementById('userDay').value;
            console.log(userDayEntered);
        }

        /*create countdown timer using substraction*/
        function updateCountdowntime() {
            const currentTime = new Date();
            const diff = userDate - currentTime;
            console.log(diff);

            /* we've been given the difference in milliseconds, so some division is needed */
            const d = Math.floor(diff / 1000 / 60 / 60 / 24);
            const h = Math.floor(diff / 1000 / 60 / 60) % 24;
            const m = Math.floor(diff / 1000 / 60) % 60;
            const s = Math.floor(diff / 1000) % 60;

            /* send values back into HTML document */

            document.getElementById('days').innerHTML = d;
            document.getElementById('hours').innerHTML = h;
            document.getElementById('minutes').innerHTML = m;
            document.getElementById('seconds').innerHTML = s;

            document.getElementById('userOccasion').innerHTML = userOccasion;
        }

        setInterval(updateCountdowntime, 1000);



       * {
            box-sizing: border-box;
        }

        body {
            background-color: rgb(44, 48, 48);
            font-family: sans-serif;
            color: rgb(239, 239, 239);
            font-size: 3em;
            font-weight: 300;
            height: 100vh;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }

        div {
            margin-top: 1vh;
        }

        label {
            font-size: 0.4em;
        }

<div>
        <label for="userYear">year</label>
        <input id="userYear" type="number" value="" placeholder="e.g. 2021">

        <label for="userMonth">month</label>
        <input id="userMonth" type="number" value="" placeholder="e.g. 8">

        <label for="userDay">day</label>
        <input id="userDay" type="number" value="" placeholder="17">

        <button onclick="enterSpecialDate()">Enter</button>

    </div>

    <div>

        <p>there are</p>

        <div class="time">
            <span id="days"></span>
            <span>days</span>
        </div>

        <div class="time">
            <span id="hours"></span>
            <span>hours</span>
        </div>

        <div class="time">
            <span id="minutes"></span>
            <span>minutes</span>
        </div>

        <div class="time">
            <span id="seconds"></span>
            <span>seconds</span>
        </div>

        <p>until <span id="userOccasion"></span></p>

    </div>

弗拉库

您应该能够通过几个简单的提示或文本输入字段来完成此操作。

例如:

要求用户输入一个月,然后一天,然后一年。您将这些输入保存为单独的变量。然后您使用 const newYearTime 但不是使用硬编码日期,而是使用变量作为日期。

现在你有 const newYearTime = new Date('january' ,1,current year etc...)

根据提示,您可以执行以下操作:

let year = number(prompt: enter year)
let day = number(prompt: enter day)
let month = prompt: enter month

然后你只需将 const newYearTime 更改为

Const newYearTime = new Date(month, day, year)

我知道我的代码不正确。我不在我的电脑前,所以我没有我的编辑器来写它应该是的,但我想你明白我的意思。

我对 javascript 也很陌生,但如果我认为我知道该怎么做,我会尽力提供帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建一个以用户输入开头的Java GUI倒数计时器

在python中创建一个数据库,用户可以在其中输入数据?

如何创建一个文本框,用户可以在其中输入大量文本

给定一个计时器列表,如何在其中一个计时器完成时输出,同时又能够重置该列表?

用于使用strtotime(“未来日期/时间”)进行升级的PHP Countdown计时器-strtotime(“ now”)=倒数?

创建一个计时器

基于月份间隔的下一个未来日期

为每个主题输入设置一个 10 秒的计时器

如何创建一个计时器然后通知用户它的完成

如何制作一个单元格,可以在其中输入特定日期而无需在公式中编辑日期

一个自动锁定屏幕的计时器可以让您脱离计算机吗?

我如何制作一个计时器并为每过一秒增加一个变量

如何阻止用户在 angular 的日期类型输入中输入未来日期

HTML 输入日期:不允许用户使用键盘输入未来日期

使用一个物理计时器模拟多个虚拟计时器

.NET 调度许多操作:单个计时器与一个计时器进行操作

一次一个摇摆计时器?

设置用户输入点击的计时器

在React中创建一个计时器

如何让一个订阅多个计时器?

一个简单的JavaScript倒数计时器的代码?

在javascript中创建一个计数计时器

如何创建一个jQuery时钟/计时器

在我的代码中添加一个计时器

创建一个RXJS中断计时器

SpriteKit-创建一个计时器

一个可靠的Java计时器

PyQt4-创建一个计时器

在问卷中添加一个小计时器