简体   繁体   English

外部 JavaScript 文件中的 Function 将无法运行 OnClick

[英]Function in External JavaScript file will not run OnClick

I created a month calendar using an HTML table element.我使用 HTML 表元素创建了一个月历。 The table head, from left to right, contains a left caret, the month and year, and a right caret.表头从左到右包含一个左插入符、月份和年份以及一个右插入符。 I'm trying to call a JS function that changes the value of the month and year to the next month when the right caret is clicked.我正在尝试调用一个 JS function,它会在单击右插入符号时将月份和年份的值更改为下一个月。 I've tried everything I've found online, but the function will not run.我已经尝试了我在网上找到的所有内容,但 function 无法运行。

Here is the HTML code portion where I call the function displayNextMonth().这是 HTML 代码部分,我在其中调用 function displayNextMonth()。 I put the script before the ending body tag.我把脚本放在结束的 body 标签之前。

<table class="table">
          <thead>
            <tr>
              <th><i class="fa fa-caret-left month-caret"></i></th>
              <th id="month-header" colspan="5"></th>
              <th id="next-month-caret" onclick="displayNextMonth()"><i class="fa fa-caret-right month-caret"></i></th>
            </tr>
            <tr>
              <th>Sun</th>
              <th>Mon</th>
              <th>Tue</th>
              <th>Wed</th>
              <th>Thu</th>
              <th>Fri</th>
              <th>Sat</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td class="calendar-day" id="sun-w1"></td>
              <td class="calendar-day" id="mon-w1"></td>
              <td class="calendar-day" id="tue-w1"></td>
              <td class="calendar-day" id="wed-w1"></td>
              <td class="calendar-day" id="thu-w1"></td>
              <td class="calendar-day" id="fri-w1"></td>
              <td class="calendar-day" id="sat-w1"></td>
            </tr>
            <tr>
              <td class="calendar-day" id="sun-w2"></td>
              <td class="calendar-day" id="mon-w2"></td>
              <td class="calendar-day" id="tue-w2"></td>
              <td class="calendar-day" id="wed-w2"></td>
              <td class="calendar-day" id="thu-w2"></td>
              <td class="calendar-day" id="fri-w2"></td>
              <td class="calendar-day" id="sat-w2"></td>
            </tr>
            <tr>
              <td class="calendar-day" id="sun-w3"></td>
              <td class="calendar-day" id="mon-w3"></td>
              <td class="calendar-day" id="tue-w3"></td>
              <td class="calendar-day" id="wed-w3"></td>
              <td class="calendar-day" id="thu-w3"></td>
              <td class="calendar-day" id="fri-w3"></td>
              <td class="calendar-day" id="sat-w3"></td>
            </tr>
            <tr>
              <td class="calendar-day" id="sun-w4"></td>
              <td class="calendar-day" id="mon-w4"></td>
              <td class="calendar-day" id="tue-w4"></td>
              <td class="calendar-day" id="wed-w4"></td>
              <td class="calendar-day" id="thu-w4"></td>
              <td class="calendar-day" id="fri-w4"></td>
              <td class="calendar-day" id="sat-w4"></td>
            </tr>
            <tr>
              <td class="calendar-day" id="sun-w5"></td>
              <td class="calendar-day" id="mon-w5"></td>
              <td class="calendar-day" id="tue-w5"></td>
              <td class="calendar-day" id="wed-w5"></td>
              <td class="calendar-day" id="thu-w5"></td>
              <td class="calendar-day" id="fri-w5"></td>
              <td class="calendar-day" id="sat-w5"></td>
            </tr>
          </tbody>
        </table>
<script type="text/javascript" src="js/calendar.js"></script>

Here is my JavaScript code.这是我的 JavaScript 代码。

function displayNextMonth()
{
    let header = document.getElementById("month-header").innerHTML;
    let split = header.split(" ");
    let viewYear = ParseInt(split[1]);
    let viewMonth = getMonthNum(split[0]);

    if(viewMonth === 11)
    {
        viewYear++;
        viewMonth = 0;
    }
    else
    {
        viewMonth++;
    }

    setCalendarMonth(viewYear, viewMonth);
}
function setCalendarMonth(year, month)
{
    document.getElementById("month-header").innerHTML = getMonthName(month) + " " + year.toString();
}

I know the function getMonthNum, which is called in DisplayNextMonth(), works, so that's not the problem.我知道在 DisplayNextMonth() 中调用的 function getMonthNum 有效,所以这不是问题所在。

The reason the function isn't running is because there is nothing to click on. function 没有运行的原因是因为没有什么可以点击。 In this example I have added some random letters inside the element with the onclick handler, and when clicking it you can see that the function runs:在此示例中,我使用onclick处理程序在元素内添加了一些随机字母,单击它时您可以看到 function 运行:

 function displayNextMonth() { let header = document.getElementById("month-header").innerHTML; let split = header.split(" "); let viewYear = ParseInt(split[1]); let viewMonth = getMonthNum(split[0]); if(viewMonth === 11) { viewYear++; viewMonth = 0; } else { viewMonth++; } setCalendarMonth(viewYear, viewMonth); } function setCalendarMonth(year, month) { document.getElementById("month-header").innerHTML = getMonthName(month) + " " + year.toString(); }
 <table class="table"> <thead> <tr> <th><i class="fa fa-caret-left month-caret"></i></th> <th id="month-header" colspan="5"></th> <th id="next-month-caret" onclick="displayNextMonth()">jhgjyguyjg<i class="fa fa-caret-right month-caret"></i></th> </tr> <tr> <th>Sun</th> <th>Mon</th> <th>Tue</th> <th>Wed</th> <th>Thu</th> <th>Fri</th> <th>Sat</th> </tr> </thead> <tbody> <tr> <td class="calendar-day" id="sun-w1"></td> <td class="calendar-day" id="mon-w1"></td> <td class="calendar-day" id="tue-w1"></td> <td class="calendar-day" id="wed-w1"></td> <td class="calendar-day" id="thu-w1"></td> <td class="calendar-day" id="fri-w1"></td> <td class="calendar-day" id="sat-w1"></td> </tr> <tr> <td class="calendar-day" id="sun-w2"></td> <td class="calendar-day" id="mon-w2"></td> <td class="calendar-day" id="tue-w2"></td> <td class="calendar-day" id="wed-w2"></td> <td class="calendar-day" id="thu-w2"></td> <td class="calendar-day" id="fri-w2"></td> <td class="calendar-day" id="sat-w2"></td> </tr> <tr> <td class="calendar-day" id="sun-w3"></td> <td class="calendar-day" id="mon-w3"></td> <td class="calendar-day" id="tue-w3"></td> <td class="calendar-day" id="wed-w3"></td> <td class="calendar-day" id="thu-w3"></td> <td class="calendar-day" id="fri-w3"></td> <td class="calendar-day" id="sat-w3"></td> </tr> <tr> <td class="calendar-day" id="sun-w4"></td> <td class="calendar-day" id="mon-w4"></td> <td class="calendar-day" id="tue-w4"></td> <td class="calendar-day" id="wed-w4"></td> <td class="calendar-day" id="thu-w4"></td> <td class="calendar-day" id="fri-w4"></td> <td class="calendar-day" id="sat-w4"></td> </tr> <tr> <td class="calendar-day" id="sun-w5"></td> <td class="calendar-day" id="mon-w5"></td> <td class="calendar-day" id="tue-w5"></td> <td class="calendar-day" id="wed-w5"></td> <td class="calendar-day" id="thu-w5"></td> <td class="calendar-day" id="fri-w5"></td> <td class="calendar-day" id="sat-w5"></td> </tr> </tbody> </table> <script type="text/javascript" src="js/calendar.js"></script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM