HTML 下拉列表到 Javascript 变量显示错误

HTML Dropdown to Javascript variable display error

本文关键字:显示 错误 变量 Javascript 下拉列表 HTML      更新时间:2023-09-26

我正在尝试创建一个时钟来使用睡眠周期来建议起床时间。当使用 var hour = time.gethours() 拉动小时和分钟时,我让它工作;但是,当我想让它使用下拉菜单中的用户输入时,我在输出中出现错误。代码如下。

错误的一个例子是 [object HTMLSelectElement]1:[object HTMLSelectElement]52 pm

<body>
    <div id="container">
        <br>
        <div id="txt"></div>
        <div class="row">
            <div class="large-12 medium-12 small-12 columns">
                <p class="title">Sleep Calculator</p>
            </div>
        </div>
        <br>
        <div class="row">
            <div class="large-12 medium-12 small-12 columns">
                <p id="currentTime" class="title"></p>
            </div>
            <div class="large-3 large-centered medium-4 medium-centered small-8 small-centered columns">
                <form>
                    <select id="dropdown" name="dropdown">
                        <option value="0">Hours</option>
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                        <option value="10">10</option>
                        <option value="11">11</option>
                        <option value="12">12</option>
                        <option value="13">13</option>
                        <option value="14">14</option>
                        <option value="15">15</option>
                        <option value="16">16</option>
                        <option value="17">17</option>
                        <option value="18">18</option>
                        <option value="19">19</option>
                        <option value="20">20</option>
                        <option value="21">21</option>
                        <option value="22">22</option>
                        <option value="23">23</option>
                    </select>
                </form>
                <form>
                    <select id="dropdownmin" name="dropdownmin">
                        <option value="0">Minutes</option>
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                        <option value="10">10</option>
                        <option value="11">11</option>
                        <option value="12">12</option>
                        <option value="13">13</option>
                        <option value="14">14</option>
                        <option value="15">15</option>
                        <option value="16">16</option>
                        <option value="17">17</option>
                        <option value="18">18</option>
                        <option value="19">19</option>
                        <option value="20">20</option>
                        <option value="21">21</option>
                        <option value="22">22</option>
                        <option value="23">23</option>
                    </select>
                </form>
            </div>
        </div>
        <br>
        <br>
        <div class="row">
            <div class="large-12 medium-12 small-12 columns">
                <p class="intro1">Find out when to get up if you go to bed now</p>
            </div>
        </div>
        <br>
        <div class="row">
            <div class="large-12 large-centered medium-12 small-12 columns">
                <a class="button" onclick="sleepFunction()">zzz</a>
            </div>
        </div>
        <div class="row">
            <div class="large-12 medium-12 small-12 columns">
                <p class="intro1" id="averageWarning"></p>
            </div>
        </div>
        <div class="row">
            <div class="large-12 medium-12 small-12 columns">
                <p class="intro1" id="sleepNow"></p>
            </div>
        </div>
        <br>
        <div class="row">
            <div class="large-2 medium-2 small-2 columns">
                <p class="intro" id="demo"></p>
            </div>
            <div class="large-2 medium-2 small-2 columns">
                <p class="intro" id="demo1"></p>
            </div>
            <div class="large-2 medium-2 small-2 columns">
                <p class="intro" id="demo2"></p>
            </div>
            <div class="large-2 medium-2 small-2 columns">
                <p class="intro" id="demo3"></p>
            </div>
            <div class="large-2 medium-2 small-2 columns">
                <p class="intro" id="demo4"></p>
            </div>
            <div class="large-2 medium-2 small-2 columns">
                <p class="intro" id="demo5"></p>
            </div>
        </div>

和 JS

var time = new Date();
var hours = time.getHours();
var minutes = time.getMinutes();
var amPM = "pm";
if (hours > 12) {
    hours = hours - 12;
    amPM = "pm"
}
document.getElementById("currentTime").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;

function checkTime(i) {
    if (i < 10) {
        i = "0" + i
    }; // add zero in front of numbers < 10
    return i;
}
function sleepFunction() {
    var time = new Date();
    var hours = document.getElementById('dropdown');
    var minutes = document.getElementById('dropdownmin');
    var amPM = "pm";
    //    var fixmin = "0";
    if (hours >= 12) {
        hours = hours - 12;
        amPM = "pm"
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    var hours = hours + 1;
    var minutes = minutes + 52;
    if (minutes >= 60) {
        hours = hours + 1;
        minutes = minutes - 60;
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    if (hours >= 12) {
        hours = hours - 12;
        amPM = "pm"
    }
    document.getElementById("demo").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;
    var hours = hours + 1;
    var minutes = minutes + 15;
    if (minutes >= 60) {
        hours = hours + 1;
        minutes = minutes - 60;
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    if (hours >= 12) {
        hours = hours - 12;
        amPM = "pm"
    }
    document.getElementById("demo1").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;
    var hours = hours + 1;
    var minutes = minutes + 30;
    if (minutes >= 60) {
        hours = hours + 1;
        minutes = minutes - 60;
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    if (hours > 12) {
        hours = hours - 12;
        amPM = "pm"
    }
    document.getElementById("demo2").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;
    var hours = hours + 1;
    var minutes = minutes + 30;
    if (minutes >= 60) {
        hours = hours + 1;
        minutes = minutes - 60;
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    if (hours > 12) {
        hours = hours - 12;
        amPM = "am"
    }
    document.getElementById("demo3").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;
    var hours = hours + 1;
    var minutes = minutes + 30;

    if (minutes >= 60) {
        hours = hours + 1;
        minutes = minutes - 60;
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    if (hours > 12) {
        hours = hours - 12;
        amPM = "am"
    }

    document.getElementById("demo4").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;
    var hours = hours + 1;
    var minutes = minutes + 30;
    if (minutes >= 60) {
        hours = hours + 1;
        minutes = minutes - 60;
    }
    if (minutes < 10) {
        minutes = minutes;
    }
    if (hours > 12) {
        hours = hours - 12;
        amPM = "am"
    }
    document.getElementById("demo5").innerHTML = hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ' ' + amPM;
    document.getElementById("averageWarning").innerHTML = "It Takes the Average Human 18 Minutes to Fall Aleep after viewing a screen";
    document.getElementById("sleepNow").innerHTML = "If you go to bed right now, you should set your alarm for one of these times";
}

您正在尝试对 HTML 元素执行计算:

var hours = document.getElementById('dropdown');
if (hours >= 12) {
    hours = hours - 12;
}

您需要这些元素中的,而不是元素本身。 像这样:

var hoursSelect = document.getElementById('dropdown');
var hours = parseInt(hoursSelect.options[hoursSelect.selectedIndex].value);