Javascript 带开关盒的功能不为';我不能给出结果

Javascript 带开关盒的功能不为';我不能给出结果,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个函数,它获取日期并根据日期返回符号。例如,如果一个人的输入是15.4.1996 输出将为Aries 我只检查日和月(年不计量),但问题是目前我没有得到任何输出。为什么? 函数yourSign(){ var signDate=$(“输入[name='birthDate']”)val(); 开关(签名日期){ 案例0: outputSign=“Aries” var dateFrom=“21/03”; var dateTo=“20/04”; var dateFrom=dateFrom.spl

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

输出将为Aries

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

函数yourSign(){
var signDate=$(“输入[name='birthDate']”)val();
开关(签名日期){
案例0:
outputSign=“Aries”
var dateFrom=“21/03”;
var dateTo=“20/04”;
var dateFrom=dateFrom.split(“/”);
var dateTo=dateTo.split(“/”);
var from=新日期(d1[2],parseInt(d1[1])-1);//-1,因为月份从0到11
var to=新日期(d2[2],parseInt(d2[1])-1);
signDate=新日期(c[2],parseInt(c[1])-1);
var signOutput=console.log(signDate>from&&signDate

你的星座
生日

发送
您的标志是:

您的代码中有许多问题需要解决:

第3行:

switch (signDate) {
        case 0:
=>为什么要将日期的大小写转换为字符串表示形式?什么时候应该将其计算为0

第8-12行:

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

    var dateFrom = dateFrom.split("/");
    var dateTo = dateTo.split("/");
=>将
dateFrom
dateTo
声明为字符串,然后将它们重新声明为数组(这是
split()
函数的结果)。你应该避免那样做,这有点让人困惑。从后面的几行中,我假设您打算命名数组
d1
d2

第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);
=>
c
d1
d2
未定义。我猜
d1
d2
是日期字符串被拆分的结果(见上文)。但是
c

第18行:

var signOutput = console.log(signDate > from && signDate < to)
var-signOutput=console.log(signDate>from&&signDate
=>您正在将
console.log()
的返回值设置为signOutput变量
console.log
将内容打印到控制台并返回
undefined

“带开关盒的函数不提供输出”

这是一个很好的例子。OP应在了解某些事实的情况下处理此问题:

  • 用户输入有两个范围:月:1到12个数字和天:1到31个数字。日期API和/或
    比较复杂,不需要年份只需要用户提供两个号码

  • 可以使用
    及其表单控件(即
    等)来约束用户输入,以便编写函数以期望特定输入,并始终期望输出相同的结果。使用来自<代码> <代码>的数据>必须考虑它是否被实例化到一个对象,格式化等。例如,尝试< <强> >代码> <代码>几个月,<代码> <代码> < <强> >。

  • 加载了jQuery,所以有一些事情要考虑。永远不要使用on-event属性。jQuery事件处理功能强大,因此请充分利用它


    signDate>from&&signDate
    typo,区分大小写-如果设置正确,您的IDE应该可以看到这一点。返回值将是一个字符串,但您正在与一个数字进行比较。尝试使用
    “0”
    。它的
    出生日期
    不是
    出生日期
    @ladyd
    d1
    d2
    c
    来自哪里?或者他们也是打字错误?这代码到处都是。检查所有变量名的拼写(区分大小写!),确保每个变量名只初始化一次!