Javascript 带开关盒的功能不为';我不能给出结果
我有一个函数,它获取日期并根据日期返回符号。例如,如果一个人的输入是15.4.1996 输出将为Aries 我只检查日和月(年不计量),但问题是目前我没有得到任何输出。为什么?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
函数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和/或
比较复杂,不需要年份只需要用户提供两个号码 - 可以使用
及其表单控件(即
、
、
等)来约束用户输入,以便编写函数以期望特定输入,并始终期望输出相同的结果。使用来自<代码> <代码>的数据>必须考虑它是否被实例化到一个对象,格式化等。例如,尝试< <强> >代码> <代码>几个月,<代码> <代码> < <强> >。
signDate>from&&signDate
typo,区分大小写-如果设置正确,您的IDE应该可以看到这一点。返回值将是一个字符串,但您正在与一个数字进行比较。尝试使用“0”
。它的出生日期不是出生日期@ladydd1
、d2
和c
来自哪里?或者他们也是打字错误?这代码到处都是。检查所有变量名的拼写(区分大小写!),确保每个变量名只初始化一次!