javascript - 带开关盒的功能不提供输出

标签 javascript jquery html css

我有一个获取日期的函数,应该根据日期返回符号。例如,如果一个人的输入是 15.4.1996

输出将是白羊座

我只检查日和月(年不计),但目前我没有得到任何输出的问题。为什么?

function yourSign() {
    var signDate = $("input[name='birthDate']").val();
    switch (signDate) {

        case 0:
            outputSign = "Aries"

            var dateFrom = "21/03";
            var dateTo = "20/04";

            var dateFrom = dateFrom.split("/");
            var dateTo = dateTo.split("/");

            var from = new Date(d1[2], parseInt(d1[1]) - 1); // -1 because months are from 0 to 11
            var to = new Date(d2[2], parseInt(d2[1]) - 1);
            signDate = new Date(c[2], parseInt(c[1]) - 1);

            var signOutput = console.log(signDate > from && signDate < to)
            $("#output").val(signOutput);

            //  document.getElementsByName('output')[0].value = signOutput;
    }
}
<head>
   <meta charset="utf-8" />
   <title>your sign</title>
   <link rel="stylesheet">
   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
   <div>
   <form id="yourSign">
      <label for=birthDate>birthdate</label><br /><input type="date" name="birthDate" id="birthDate" /><br />
      <button onclick="yourSign()" id="sendSign" name="sendSign">send</button><br>
      <label for="output" id="output">your sign is: </label><br><input type="text" name="output">
   </form>

最佳答案

您的代码中有很多问题需要修复:

第 3 行:

switch (signDate) {
        case 0:

=> 为什么要在日期的字符串表示形式上切换大小写?什么时候应该评估为 0 ?

第 8-12 行:

    var dateFrom = "21/03";
    var dateTo = "20/04";

    var dateFrom = dateFrom.split("/");
    var dateTo = dateTo.split("/");

=> 您将 dateFromdateTo 声明为字符串,然后将它们重新声明为数组(split() 的结果)功能)。你应该避免这样做,这有点令人困惑。从后面几行开始,我假设您打算将数组命名为 d1d2

第 14-16 行:

   var from = new Date(d1[2], parseInt(d1[1]) - 1); // -1 because months are from 0 to 11
   var to = new Date(d2[2], parseInt(d2[1]) - 1);
   signDate = new Date(c[2], parseInt(c[1]) - 1);

=> cd1d2 未定义。我猜 d1d2 是日期字符串被拆分的结果(见上文)。但是 c 呢?

第 18 行:

var signOutput = console.log(signDate > from && signDate < to)

=> 您正在将 console.log() 的返回值设置为 signOutput 变量。 console.log 将内容打印到控制台并返回 undefined

关于javascript - 带开关盒的功能不提供输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55594149/

相关文章:

javascript - 如何使用 nextAll 使用 jquery/查找所有输入

javascript - 插入父帖子vue js的子评论

javascript - 使用 Jquery 检查/取消检查输入框

javascript - 全局 $.ajaxSetup() 调用不会影响单独函数中的 $.ajax() 调用吗?

html - 启用或禁用输入如何根据选择选项的值使用 jQuery?

html - 如何使用 HTML 和 CSS 将三位文本左、右、中对齐?

javascript - 数据表columnDefs不工作: jquery/javascript

javascript - jQuery mobile - 在不知道页面名称的情况下强制 pagebeforeshow

php - 如何在 PHP 中转义这个 JavaScript 变量

html - 使垂直滚动条在 DIV 中始终可见