我有2个功能做同样的事情。一个工作,一个不工作。
function showHideRedrawAttendanceAvg(chart, dataType)
{
$("#attendanceCount").addClass("hide");
$("#attendanceAvg").removeClass("hide");
redrawAttendance(chart, dataType);//Parameters are defined
}
function redrawAttendance(chart, dataType) //Parameters are passed and are defined
{
//Some logic
}
//I tried change the parameter name several times to make sure it was unique
function showHideRedrawAttendanceCount(agagfadfg)
{
$("#attendanceAvg").addClass("hide");
$("#attendanceCount").removeClass("hide");
redrawAttendanceTree(agagfadfg);//Parameter is defined
}
function redrawAttendanceTree(agagfadfg)//Parameter becomes undefined
{
//Some logic
}
我不知道为什么这两个函数的行为不同。我甚至从文件中删除了所有的javascript,只是离开了showHideRedrawAttendanceCount和redrawAttendanceCount函数,它仍然无效。
<ul class="dropdown-menu">
<li class="dropdown-submenu">
<a href="#">Attendance Average</a>
<ul class="dropdown-menu">
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceAvg(attendance, 'Weekly')">Weekly</a></li>
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceAvg(attendance, 'Monthly')">Monthly</a></li>
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceAvg(attendance, 'Quarterly')">Quarterly</a></li>
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceAvg(attendance, 'Yearly')">Yearly</a></li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#">Attendance Total</a>
<ul class="dropdown-menu">
<li><a data-toggle="tab" href="#attendance" onclick="">Weekly</a></li>
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceCount('Monthly')">Monthly</a></li>
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceCount('Quarterly')">Quarterly</a></li>
<li><a data-toggle="tab" href="#attendance" onclick="showHideRedrawAttendanceCount('Yearly')">Yearly</a></li>
</ul>
</li>
</ul>
答案 0 :(得分:1)
致电时
redrawAttendanceTree(agagfadfg);
redrawAttendanceTree
函数未在您提供的代码示例中定义,因此如果您尝试调用不存在的函数,则会出错。
drawAttendanceTree
永远不会在您提供的代码示例中调用。
答案 1 :(得分:0)
Javascript中的函数重载与其他语言不同。在Javascript中只是因为函数中的参数较少并不意味着它具有不同的签名,而是它的名称。
这样
function showHideRedrawAttendanceCount(agagfadfg)
永远不会被召唤。
要想实现您的目标,请尝试this thread了解如何在Javascript中最好地重载函数。