传递变量变为未定义的javascript

时间:2013-03-08 15:51:55

标签: javascript parameters

我有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>

2 个答案:

答案 0 :(得分:1)

致电时

redrawAttendanceTree(agagfadfg);

redrawAttendanceTree函数未在您提供的代码示例中定义,因此如果您尝试调用不存在的函数,则会出错。

drawAttendanceTree永远不会在您提供的代码示例中调用。

答案 1 :(得分:0)

Javascript中的函数重载与其他语言不同。在Javascript中只是因为函数中的参数较少并不意味着它具有不同的签名,而是它的名称。

这样

function showHideRedrawAttendanceCount(agagfadfg)

永远不会被召唤。

要想实现您的目标,请尝试this thread了解如何在Javascript中最好地重载函数。