jQuery计算日期

时间:2011-10-04 00:08:38

标签: javascript jquery

为什么这会在错误的一天降落?

http://jsfiddle.net/SparrwHawk/MH5wP/

我已经编写了下面的代码供参考,但在jsfiddle上显然更清楚

<p>Sun / Closed</p>
<p>Mon / Closed</p>
<p>Tues / 9am – 5pm</p>
<p>Wed / 9am – 5pm</p>
<p>Thurs / 9am – 8pm</p>
<p>Fri / 9.30pm – 6.30pm</p>
<p>Sat / 8.30am – 4.30pm</p>

<script>
// Day where 0 is Sunday
var date = new Date();
var d = (date.getDay());

$(function(){
    if (d = 1) {
        $('p:contains("Mon")').addClass('today');
    } else if (d = 2) {
        $('p:contains("Tues")').addClass('today');
    } else if (d = 3) {
        $('p:contains("Wed")').addClass('today');
    } else if (d = 4) {
        $('p:contains("Thurs")').addClass('today');
    } else if (d = 5) {
        $('p:contains("Fri")').addClass('today');
    } else if (d = 6) {
        $('p:contains("Sat")').addClass('today');
    } else {
        $('p:contains("Sun")').addClass('today');
    }    
});
</script>

3 个答案:

答案 0 :(得分:7)

你必须使用双等号(==)来检查你的d值,否则你将用你的第一个if语句设置d=1并且你将永远有一个红色星期一。

答案 1 :(得分:4)

你在if中使用了assignement(=)而不是比较(==或===)。

所以你正在做的是if ( (d = 1) === true ),如果你可以给1分配1。这是有效的,所以代码会输入你的第一个if而且elses永远不会被触及。

确保不要犯这种错误的一种简单方法是在检查硬编码值时反转操作数的顺序:

$(function(){
  if (1 == d) {
    // do something ...

这样一来,如果你错误地使用了=,那么分配失败就会出错。

答案 2 :(得分:2)

你应该能够做一些更简单的事情,比如:

$(function()
{
  var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
  var day = days[(new Date()).getDay()];
  $('p:contains("' + day + '")').addClass('today');
});