【问题标题】:Why does datepicker highlight not work when I use "=="?为什么当我使用“==”时日期选择器高亮不起作用?
【发布时间】:2014-08-11 11:46:22
【问题描述】:
   .Highlighted a{
   background-color : Green !important;
   background-image :none !important;
   color: White !important;
   font-weight:bold !important;
   font-size: 9pt;

}


  $(document).ready(function () {

                var date1 = new Date(2014, 5, 6);
                var date2 = new Date(2014, 5, 17);

                $('#datepicker').datepicker({

                   dateFormat: "mm/dd/yy",

                   beforeShowDay: function (date) {


                       if (date == date1 ) {

                            return [true, 'Highlighted', 'Available Date'];
                        }
                        return [false, '', ''];
                    }
                });
        });

这个不起作用,因为date==date1。如果我将其更改为date<=date1,它工作正常。我认为 javascript 是一种弱类型语言,它比较内容,而不是参考。我不想做类似(date.getDay==date1.getDay &&....) 的事情。有没有更简单的方法来比较这些值?

【问题讨论】:

标签: javascript jquery css jquery-ui reference


【解决方案1】:

Demo Fiddle

使用+ 一元运算符 (reference) 将值转换为数字以进行比较。

一元+运算符将其操作数转换为数字类型。


if (+date === +date1 ) {

      return [true, 'Highlighted', 'Available Date'];
}

if (!(date - date1)) {

      return [true, 'Highlighted', 'Available Date'];
}

【讨论】:

  • 感谢@canon 的加入。
  • 这基本上完成了另一个答案的作用,但是我发现另一个答案更容易阅读。另外,JavaScript 新手不会知道这些优点到底在做什么。
  • @j08691,我知道,只是我之前用'+'解决了同样的问题。
  • @j08691 我认为 JavaScript 新手不会查看 getTime() 并知道它的意思是 “自 1970-01-01 UTC 以来的秒数” 而不是“日期的时间部分”valueOf() 看起来更有吸引力……但仍然不是很好。
【解决方案2】:

按照in this post 的建议,您想使用以下方法比较日期:

date.getTime() == date1.getTime()

【讨论】:

  • 这个效果和+date一样,但是更容易理解。
【解决方案3】:

另一种方式:

if (date.valueOf() == date1.valueOf())

【讨论】:

    猜你喜欢
    • 2017-01-31
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多