2

I'm currently trying to create a calendar that prints the date of today

However, my calendar is still blank

with when I try to print the calendar whole calendar

Because I'm not printing tables through HTML, I was trying to print the table through javascript instead.

var $ = function (id) { return document.getElementById(id); };


var getMonthText = function(currentMonth) {
    if (currentMonth === 0) { return "January"; }
    else if (currentMonth === 1) { return "February"; }
    else if (currentMonth === 2) { return "March"; }
    else if (currentMonth === 3) { return "April"; }
    else if (currentMonth === 4) { return "May"; }
    else if (currentMonth === 5) { return "June"; }
    else if (currentMonth === 6) { return "July"; }
    else if (currentMonth === 7) { return "August"; }
    else if (currentMonth === 8) { return "September"; }
    else if (currentMonth === 9) { return "October"; }
    else if (currentMonth === 10) { return "November"; }
    else if (currentMonth === 11) { return "December"; }
};

var getLastDayofMonth = function(currentMonth) {
    var dt = new Date();
    dt.setMonth(currentMonth +1);
    dt.setDate(0);
    
    return dt.getDate();
    
};

window.onload = function () {
    
    //var year =
    
};
body {
    font-family: Arial, Helvetica, sans-serif;
    background-color: white;
    margin: 0 auto;
    width: 360px;
    border: 3px solid blue;
    padding: 0 2em 1em;
}
h1 {
    color: blue;
    margin-bottom: .25em;
}
table {
    border-collapse: collapse;
    border: 1px solid black;
}
td {
    width: 3em;
    height: 3em;
    vertical-align: top;
    padding: 0.5 0 0 0.5;
    border: 1px solid black;
}
    <title>Calendar</title>
    <link rel="stylesheet" href="calendar.css">
    <script src="calendar.js"></script>

<body>
    <main>
        <h1><span id="month_year">&nbsp;</span></h1>

        <table id="calendar">
            <tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>
            
            
        </table>
    </main>
</body>

6
  • post fiddle with issue Commented Feb 15, 2017 at 4:07
  • jsfiddle.net/wtb1s7bf Commented Feb 15, 2017 at 4:09
  • Don't bother with a fiddle, the code runs here. Commented Feb 15, 2017 at 4:20
  • Why would someone create a calendar from scratch when there is whole lot of calendar scripts already available on the Internet for free.? Software development is now in a kind of contributing-benefitting model, feel free to use whatever is good for you. One example would be, fullcalendar.io Commented Feb 15, 2017 at 4:22
  • i wanted to create for personal experience Commented Feb 15, 2017 at 4:27

1 Answer 1

1

You need to make more of a start on the calendar part, but here's some help with what you have.

The getMonthText function would be better named getMonthName and can be as simple as:

/* Return month name
** @param {number|string} index - integer month number, zero indexed
** @returns {string} Full month name or undefined if index < 0 or > 11.
*/
function getMonthName(index) {
  return ['January','February','March','April','May','June','July',
          'August','September','October','November','December'][index];
}

var index = new Date().getMonth();

console.log(getMonthName(index));

The getLastDayofMonth function should set the date to the first of the month (or any date before 29) before adding a month, since adding 1 month to 31 January returns 2 or 3 March, so you'll get the last day of February (and similarly for any month followed by another month of fewer days), so:

/* Return a date for the last day of the month of the provided date
** @param {Date} date - date to get last day of month for
** @returns {Date} date for last day of month
*/
function getLastDayOfMonth(date) {
  // Copy date so don't modify original, default to today
  var d = date? new Date(date) : new Date();
  // Set to start of month
  d.setDate(1);
  // Add a month and set to last day of previous
  // i.e. set to last day of current month
  d.setMonth(d.getMonth() + 1, 0);
  return d;
}

console.log(getLastDayOfMonth().toString());
console.log(getLastDayOfMonth(new Date(2016,1)).toString());

The rest of your missing function body needs to create cells for each day, then fill them with appropriate values. Happy coding. ;-)

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.