JavaScript使用数组显示最近的生日祝福

时间:2018-10-02 10:25:05

标签: javascript arrays

使用以下代码,我试图编写代码以显示最近(从b'day的日期到15天)的b'day的愿望。目前没有任何显示。我是JavaScript的新手,所以需要您的帮助。

var dates = ["02/09/2009", "12/10/2010", "02/01/2001"];
var names = ["Mac", "Jac", "Tom"];
var today = new Date();

alert(today.getMonth()+1);
//alert(today.getDay());

//alert(typeof(day));

for(var i = 0; i < dates.length; i++) {
  if (dates[i].split('/')[0] = today.getDay() && dates[i].split('/')[1] = today.getMonth()+1 && dates[i].split('/')[0] <= today.getDay()+15)
    {
 document.getElementById("demo").innerHTML = "Wish You Happy Birthday, " + names[dates.indexOf(dates[i])] + "(" + dates[i] + ")";
    }
    else{
    document.getElementById("demo").innerHTML = "No matches";
    }
}
<p id="demo"></p>

2 个答案:

答案 0 :(得分:0)

最后,使用第三种方法,我可以使其发挥作用,请大家帮忙!

function parseDate(str) {
    var mdy = str.split('/');
    return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
    // Take the difference between the dates and divide by milliseconds per day.
    // Round to nearest whole number to deal with DST.
function datediff(first, second) {
    return Math.round((second-first)/(1000*60*60*24));
}
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!

var y = today.getFullYear();
var dates = ["10/16/" + y, "09/20/" + y, "10/2/" + y, "9/6/" + y, "10/10/" + y, "10/3/" + y];
var names = ["Mac", "Jac", "Tom", "Abhay", "Mahesh", "Jayesh"];
var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];

for(var i = 0; i < dates.length; i++) {
//document.getElementById("mySup").innerHTML = getGetOrdinal(dates[i].split('/')[0]);
  if (datediff(parseDate(dates[i]), (today)) <= 7 && datediff(parseDate(dates[i]), (today)) >= 1)
    {
 document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + "Wish You Happy Birthday, " + names[dates.indexOf(dates[i])] + "!!! (" + getGetOrdinal(dates[i].split('/')[1]) + " " + months[dates[0].split('/')[0]-1]+  ")" + "<br>";
    }
}

function getGetOrdinal(n) {
    var s=["th","st","nd","rd"],
    v=n%100;
    return n+(s[(v-20)%10]||s[v]||s[0]);
 }
<p><span id="demo"></span><sup id="mySup"></sup><p>

答案 1 :(得分:0)

下面的答案是我最后要做的,其中涉及函数,方法等。我确信这可能对某人有所帮助。

function parseDate(str) {
    var mdy = str.split('/');
    return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
    // Take the difference between the dates and divide by milliseconds per day.
    // Round to nearest whole number to deal with DST.
function datediff(first, second) {
    return Math.round((second-first)/(1000*60*60*24));
}
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!

var y = today.getFullYear();
var dates = ["10/1/" + y, "09/20/" + y, "10/2/" + y, "9/6/" + y, "10/10/" + y, "10/1/" + y];
var names = ["Mac", "Jac", "Tom", "Abhay", "Mahesh", "Jayesh"];
var joingDates = ["10/16/" + y, "09/20/" + y, "10/2/" + y, "9/6/" + y, "10/10/" + y, "10/3/" + y];
var joiningyears = ["2000","2002","2010","2011","2011","2014"];

var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];

for(var i = 0; i < dates.length; i++) {
//document.getElementById("mySup").innerHTML = getGetOrdinal(dates[i].split('/')[0]);
  if (datediff(parseDate(dates[i]), (today)) <= 7 && datediff(parseDate(dates[i]), (today)) >= 1)
    {
 document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + 
                                             "<li>" +
                                             "Wishing a very" + " Happy Birthday to ".bold().fontcolor("blue") +
                                             names[i].bold().fontcolor("Red") + 
                                             "!!! (" + 
                                             getGetOrdinal(dates[i].split('/')[1]).split('')[0] + 
                                             getGetOrdinal(dates[i].split('/')[1]).split('')[1].sup() + 
                                             getGetOrdinal(dates[i].split('/')[1]).split('')[2].sup() + 
                                             " " + 
                                             months[dates[0].split('/')[0]-1] +
                                             ")" + 
                                             "<br>";
    }
}

for(var i = 0; i < joingDates.length; i++) {
  if (datediff(parseDate(joingDates[i]), (today)) <= 7 && datediff(parseDate(joingDates[i]), (today)) >= 1)
    {
 document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML +
                                             "<li>" +
                                             "Wishing a very " +
                                             "Happy ".bold().fontcolor("blue") + 
                                             getGetOrdinal(y-joiningyears[i]).split('')[0].bold().fontcolor("blue") +
                                             getGetOrdinal(y-joiningyears[i]).split('')[1].sup().bold().fontcolor("blue") + 
                                             getGetOrdinal(y-joiningyears[i]).split('')[2].sup().bold().fontcolor("blue") + 
                                             " Work Anniversary to ".bold().fontcolor("blue") +
                                             names[i].bold().fontcolor("Red") + 
                                             " with " + 
                                             "XYZ Company".fontcolor("green").bold() + 
                                             "!!! (" + 
                                             getGetOrdinal(joingDates[i].split('/')[1]).split('')[0] + 
                                             getGetOrdinal(joingDates[i].split('/')[1]).split('')[1].sup() + 
                                             getGetOrdinal(joingDates[i].split('/')[1]).split('')[2].sup() +
                                             " " + 
                                             months[joingDates[0].split('/')[0]-1] +
                                             ")" + 
                                             "<br>";
    }
}

function getGetOrdinal(n) {
    var s=["th","st","nd","rd"],
    v=n%100;
    return n+(s[(v-20)%10]||s[v]||s[0]);
 }
<p id="demo"><p>