0

私は同じことをする2つの機能を持っています。1つは機能し、1つは機能しません。

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
}

2 つの関数の動作が異なる理由がわかりません。ファイルからすべての 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>
4

2 に答える 2

1

電話すると

redrawAttendanceTree(agagfadfg);

提供されたコード サンプルではredrawAttendanceTree関数が定義されていないため、存在しない関数を呼び出そうとしているとエラーが表示されます。

drawAttendanceTreeあなたが与えたコードサンプルでは決して呼び出されません。

于 2013-03-08T15:56:23.007 に答える
0

Javascriptでの関数のオーバーロードは、他の言語のようには機能しません。Javascriptでは、関数にパラメーターが少ないからといって、それが異なるシグネチャを持っていることを意味するのではなく、重要なのは名前です。

こちらです

function showHideRedrawAttendanceCount(agagfadfg)

呼び出されることはありません。

あなたが試みていることをまだ達成するために、Javascriptで関数を最もよくオーバーロードする方法についてこのスレッドを試してみてください。

于 2013-03-08T16:02:25.097 に答える